我对 SOAP 消息和 WSDL 如何组合在一起感到困惑?我已经开始研究 SOAP 消息,例如:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
所有 SOAP 消息都是 WSDL 的吗? SOAP 是一种接受自己的“SOAP 消息”或“WSDL”的协议吗?如果它们不同,那么什么时候应该使用 SOAP 消息,什么时候应该使用 WSDL?
对此进行一些澄清会很棒。
原文由 James 发布,翻译遵循 CC BY-SA 4.0 许可协议
每个请求都会发送一个 SOAP 文档。假设我们是一家书店,我们查询了一台远程服务器以了解特定书籍的当前价格。假设我们需要将书名、页数和 ISBN 号传递给服务器。
每当我们想知道价格时,我们都会发送一条唯一的 SOAP 消息。它看起来像这样;
我们希望得到一个 SOAP 响应消息,例如;
然后 WSDL 描述当服务器接收到该消息时如何处理/处理该消息。在我们的例子中,它描述了 Title、NumPages 和 ISBN 的类型,我们是否应该期待 GetBookPrice 消息的响应以及该响应应该是什么样子。
类型看起来像这样;
但是 WSDL 还包含更多信息,关于哪些功能链接在一起以进行操作,哪些操作在服务中可用,以及您可以访问服务/操作的网络位置。
另请参阅 W3 注释 WSDL 示例