创建一种服务 为多种客户端提供ws的访问方式

wsdl定义了3种绑定扩展,即为客户提供了3种访问Web Service的方法

1.soap绑定(包括soap1.1和soap1.2)

2.http get/post

3.MIME



 同一个ws可以有多重绑定,每增加一种绑定  就要修改对应的wsdl

 需要修改一下内容

1.定义头(增加新的访问协议的xml命名空间)

<wsdl:definations>添加属性

soap:  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

soap12:xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"

http: xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

mime:  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

固有的:

targetNamespace="http://WebXml.com.cn/"

xmlns:tns="http://WebXml.com.cn/"                <!--!!!!!!以上两句必需包含-->

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"<!--soap编码可以不添加-->

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">      <!--!!!!!!必包含-->

xmlns:s="http://www.w3.org/2001/XMLSchema" <!--schema标签定义-->  <!--!!!!!!必包含--> 







2.数据类型不做改变

<wdl:type>无需变动

3.服务中每个方法对应的请求和响应

<wsdl:message name="method">

<wsdl:message name="methodResponse">

修改时应标注相应的绑定协议

如

<wsdl:message name="methodSOAP11">

<wsdl:message name="methodResponseSOAP11">

对于http的get 和post方法标准写法如下

<wsdl:message name="methodGetIn">

<wsdl:message name="methodGetOut">

4.端口类型(将3中的输入输出与对应的服务中的方法联系起来)服务中每个方法增加一条

<wsdl:portType>



<wsdl:portType name="qqOnlineWebServiceHttpGet">

    <wsdl:operation name="qqCheckOnline"><!--与服务中的方法对应-->

      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">&lt;br /&gt;&lt;h3&gt;获得腾讯QQ在线状态&lt;/h3&gt;&lt;p&gt;输入参数:QQ号码 String,默认QQ号码:8698053。返回数据:String,Y = 在线;N = 离线;E = QQ号码错误;A = 商业用户验证失败;V = 免费用户超过数量&lt;/p&gt;&lt;br /&gt;</wsdl:documentation>

      <wsdl:input message="tns:qqCheckOnlineHttpGetIn" /><!--这里是绑定了方法的输入-->

      <wsdl:output message="tns:qqCheckOnlineHttpGetOut" /><!--这里是绑定了方法的输出-->

    </wsdl:operation>

</wsdl:portType>

5.端口绑定

<wsdl:binding name="qqOnlineWebServiceHttpGet" type="tns:qqOnlineWebServiceHttpGet"> <!--type属性与4portType中定义对应-->

    <http:binding verb="GET" />

    <wsdl:operation name="qqCheckOnline">     <!--这里的name属性应该与4中的指定严格对应-->

      <http:operation location="/qqCheckOnline" />  <!--这里映射了新的url-->

      <wsdl:input>

        <http:urlEncoded />

      </wsdl:input>

      <wsdl:output>

        <mime:mimeXml part="Body" />

      </wsdl:output>

    </wsdl:operation>

</wsdl:binding>

    对于post方式

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

    <http:binding verb="POST" />

    <wsdl:operation name="qqCheckOnline">

      <http:operation location="/qqCheckOnline" />

      <wsdl:input>

        <mime:content type="application/x-www-form-urlencoded" />  <!--输入为form表单-->

      </wsdl:input>

      <wsdl:output>

        <mime:mimeXml part="Body" /><!--Body在2<wsdl:type>和3<wsdl:message>中已经定义-->

      </wsdl:output>

    </wsdl:operation>

</wsdl:binding>

对于soap12

<wsdl:binding name="qqOnlineWebServiceSoap12" type="tns:qqOnlineWebServiceSoap">

    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" /><!--注意这句-->

    <wsdl:operation name="qqCheckOnline">

      <soap12:operation soapAction="http://WebXml.com.cn/qqCheckOnline" style="document" />

      <wsdl:input>

        <soap12:body use="literal" />

      </wsdl:input>

      <wsdl:output>

        <soap12:body use="literal" />

      </wsdl:output>

    </wsdl:operation>

</wsdl:binding>

6.服务发布的绑定

 <wsdl:service>

 

 <wsdl:port name="qqOnlineWebServiceSoap" binding="tns:qqOnlineWebServiceSoap">    <!--binding属性与5<wsdl:binding>的name属性对应-->

      <soap:address location="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx" />  <!--注意前缀标签名:soap soap12 http 已经在1定义头中定义-->

    </wsdl:port>

    <wsdl:port name="qqOnlineWebServiceSoap12" binding="tns:qqOnlineWebServiceSoap12">

      <soap12:address location="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx" />

    </wsdl:port>

    <wsdl:port name="qqOnlineWebServiceHttpGet" binding="tns:qqOnlineWebServiceHttpGet">

      <http:address location="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx" />

    </wsdl:port>

    <wsdl:port name="qqOnlineWebServiceHttpPost" binding="tns:qqOnlineWebServiceHttpPost">

      <http:address location="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx" />

 </wsdl:port>

 

你可能感兴趣的:(客户端)