SOAP消息和WSDL之间的区别?
我对SOAP消息和WSDL如何组合在一起感到困惑?我已经开始研究SOAP消息,例如:
POST /InStock HTTP/1.1Host: 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?
关于此的一些说明将是很棒的。
回答:
每个请求都会发送一个SOAP文档。假设我们是一家书店,并且拥有一台远程服务器,我们查询该服务器以了解特定书籍的当前价格。假设我们需要将“书名”,页数和ISBN号传递给服务器。
每当我们想知道价格时,我们都会发送一条唯一的SOAP消息。看起来像这样;
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetBookPrice xmlns:m="http://namespaces.my-example-book-info.com">
<ISBN>978-0451524935</ISBN>
<Title>1984</Title>
<NumPages>328</NumPages>
</m:GetBookPrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
而且我们希望得到一个类似的SOAP响应消息;
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetBookPriceResponse xmlns:m="http://namespaces.my-example-book-info.com">
<CurrentPrice>8.99</CurrentPrice>
<Currency>USD</Currency>
</m:GetBookPriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
然后,WSDL描述服务器接收到该消息后如何处理/处理它。在我们的案例中,它描述了Title,NumPages和ISBN的类型,是否应该从GetBookPrice消息获得响应以及该响应应是什么样。
类型看起来像这样;
<wsdl:types> <!-- all type declarations are in a chunk of xsd -->
<xsd:schema targetNamespace="http://namespaces.my-example-book-info.com"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<xsd:element name="GetBookPrice">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ISBN" type="string"/>
<xsd:element name="Title" type="string"/>
<xsd:element name="NumPages" type="integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetBookPriceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CurrentPrice" type="decimal" />
<xsd:element name="Currency" type="string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
但是WSDL还包含更多信息,有关哪些功能链接在一起进行操作,服务中可以进行哪些操作以及可以访问该服务的网络上的下落。
另请参见W3注释的WSDL示例
以上是 SOAP消息和WSDL之间的区别? 的全部内容, 来源链接: utcz.com/qa/403173.html