wsdl & soap

<wsdl:types />

  <wsdl:message name="AddSoapIn">

    <wsdl:part name="a" type="s:int" />

    <wsdl:part name="b" type="s:int" />

  </wsdl:message>

  <wsdl:message name="AddSoapOut">

    <wsdl:part name="AddResult" type="s:int" />

  </wsdl:message>

  <wsdl:portType name="MathServiceSoap">

    <wsdl:operation name="Add">

      <wsdl:input message="tns:AddSoapIn" />

      <wsdl:output message="tns:AddSoapOut" />

    </wsdl:operation>

  </wsdl:portType>

  <wsdl:binding name="MathServiceSoap" type="tns:MathServiceSoap">

    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

    <wsdl:operation name="Add">

      <soap:operation soapAction="http://idior.cnblogs.com/Math/Add" style="rpc" />

      <wsdl:input>

        <soap:body use="encoded" namespace="http://tempuri.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

      </wsdl:input>

      <wsdl:output>

        <soap:body use="encoded" namespace="http://tempuri.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

      </wsdl:output>

    </wsdl:operation>

  </wsdl:binding>
 

 

以上是一段wsdl的片断,其中主要定义了一个Add方法。针对粗体字部分,我们得到以下使用该webservice的soap请求。

POST /WebService1/Service1.asmx HTTP/1.1

Host: localhost

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://idior.cnblogs.com/Math/Add"



<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:types="http://tempuri.org/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

    <tns:Add>

      <a xsi:type="xsd:int">int</a>

      <b xsi:type="xsd:int">int</b>

    </tns:Add>

  </soap:Body>

</soap:Envelope>
可以看出在WSDL中定义好的SoapAction被放在了Http的请求头中, 为了调用Add这个WebService中的方法,SOAP包中粗体字部分发出的请求恰恰对应了WSDL中定义的operation的name---Add.

那么对于下面的WSDL文件,我们又该发出怎样的SOAP请求呢?

<wsdl:types>

    <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">

      <s:element name="Add">

        <s:complexType>

          <s:sequence>

            <s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" />

            <s:element minOccurs="1" maxOccurs="1" name="b" type="s:int" />

          </s:sequence>

        </s:complexType>

      </s:element>

      <s:element name="AddReponse">

        <s:complexType>

          <s:sequence>

            <s:element minOccurs="1" maxOccurs="1" name="AddOperationResult" type="s:int" />

          </s:sequence>

        </s:complexType>

      </s:element>

    </s:schema>

  </wsdl:types>

  <wsdl:message name="AddOperationSoapIn">

    <wsdl:part name="parameters" element="tns:Add" />

  </wsdl:message>

  <wsdl:message name="AddOperationSoapOut">

    <wsdl:part name="parameters" element="tns:AddReponse" />

  </wsdl:message>

  <wsdl:portType name="MathServiceSoap">

    <wsdl:operation name="AddOperation">

      <wsdl:input message="tns:AddOperationSoapIn" />

      <wsdl:output message="tns:AddOperationSoapOut" />

    </wsdl:operation>

  </wsdl:portType>

  <wsdl:binding name="MathServiceSoap" type="tns:MathServiceSoap">

    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

    <wsdl:operation name="AddOperation">

      <soap:operation soapAction="http://idior.cnblogs.com/Math/Add" style="document" />

      <wsdl:input>

        <soap:body use="literal" />

      </wsdl:input>

      <wsdl:output>

        <soap:body use="literal" />

      </wsdl:output>

    </wsdl:operation>

  </wsdl:binding>
 
现在为了调用AddOperation(注意 Add改成AddOperation了)方法,你认为Soap Body中对应的那个元素名???是什么呢?
POST /WebService1/Service1.asmx HTTP/1.1

Host: localhost

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://idior.cnblogs.com/Math/Add"



<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body>

    <??? xmlns="http://tempuri.org/">

      <a>int</a>

      <b>int</b>

    </???> 

  </soap:Body>

</soap:Envelope>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值