SOAP消息和WSDL之间的区别?

我对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?

关于此的一些说明将是很棒的。

回答:

每个请求都会发送一个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

回到顶部