• Soup协议-即普通post请求,内容域xml


    1.基础问题

    1.1 soup-Simple Object Access Protocal简单对象访问协议

    a).承载在http协议之上,http支持传输img/html/文件等,soup请求和响应域都是xml.
    c).wsdl->Web Services Description Language, 网络服务接口文档	,用于描述Web service函数的参数及其返回值的.
    	http://www.webservicex.net/CurrencyConvertor.asmx?wsdl	//请求后加?wsdl返回的即是对应的wsdl文件
    	
    

    1.2 可供测试的webservice

    2. 示例1-postman发起即可

    requestHeader

    Content-Type:application/soap+xml; charset=utf-8
    Content-Length:380
    SOAPAction:http://WebXml.com.cn/getSupportCity		//如果在post数据域中传递方法名,则不需要传递
    

    requestBody

    <?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
      <soap12:Body>
        <GetGeoIP xmlns="http://www.webservicex.net/">
          <IPAddress>180.102.21.198</IPAddress>
        </GetGeoIP>
      </soap12:Body>
    </soap12:Envelope>
    

    ResponseBody

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <soap:Body>
            <GetGeoIPResponse xmlns="http://www.webservicex.net/">
                <GetGeoIPResult>
                    <ReturnCode>1</ReturnCode>
                    <IP>180.102.21.198</IP>
                    <ReturnCodeDetails>Success</ReturnCodeDetails>
                    <CountryName>China</CountryName>
                    <CountryCode>CHN</CountryCode>
                </GetGeoIPResult>
            </GetGeoIPResponse>
        </soap:Body>
    </soap:Envelope>
    

    9. Java发布Webservice服务

    10. WSDL文件-Web Services Description Language(XML子集)

    a). <import>相当于java的import
    b). xmlns相当于java的import,和地址后面的targetNameSpace是对应的
    c). targetName相当于java的package
    

    10.1 通过soupUI生成入参报文和URL

    a). 安装soupUI->SOAP->Initial WSDL->标签中填入相应值即可

    10.2 WSDL转成java文件

    a). 首先新建一个 “Dynamic Web Project”, 比如: WebServiceClientTest.这个的用处是为了存放产生的Java代码。
    b). 工程->右键->WebServiceClientTest , New-->Others --->Web Services-->Web Service Client->在Service definition 输入wsdl的地址
    滑动条拉到Develop client 上。
    c). 一直下一步就产生Java Code了。
    d). 产生的Code中, 有一个Java 文件以Proxy结尾, 这个就是调用的Class了
    

    10.5 WSDL文件格式-xml

    10.5.1 -webservice中使用的数据类型

    为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。

    10.5.2 函数(操作)的入参和出参描述

    a). 接口中的每一个方法对应两个message
    
    //示例
    <wsdl:message name="GetKeyAndSignalizationRequest">
    	<wsdl:part name="body" element="kas_v1:GetKeyAndSignalizationRequest"/>
    </wsdl:message>
    
    <wsdl:message name="GetKeyAndSignalizationResponse">
    	<wsdl:part name="body" element="kas_v1:GetKeyAndSignalizationResponse"/>
    </wsdl:message>
    

    10.5.3 端口-最重要-wsdl中可执行的操作及信息

    a). 下面包含N个Operation,每个operation对应一个操作
    b).
    
    //示例
    <wsdl:portType name="KeyAndSignalizationPortType">
    	<wsdl:operation name="getKeyAndSignalization">
    		<wsdl:input message="tns:GetKeyAndSignalizationRequest" name="KeyAndSignalizationInput"/>
    		<wsdl:output message="tns:GetKeyAndSignalizationResponse"/>
    	</wsdl:operation>
    	<wsdl:operation name="heartbeat">
    		<wsdl:input message="tns:HeartbeatRequest" name="heartbeatInput"/>
    		<wsdl:output message="tns:HeartbeatResponse"/>
    	</wsdl:operation>
    </wsdl:portType> 
    

    10.5.4 -实现类-为每一端口(portType)定义消息格式和协议细节

    a). <binding>元素两个属性,name-binding名称,type指向portType中一个值
    b). <soap:binding> style-取值rpc或document,取document;transport定义要使用的SOAP协议,取HTTP
    c). <soap:operation> soapAction在httpHeader中传给server,需要唯一,暴露给外界调用的操作
    
    //示例
    <wsdl:binding name="KeyAndSignalizationV1SoapBinding" type="defs:KeyAndSignalizationPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    
    <wsdl:operation name="getKeyAndSignalization">
      <soap:operation soapAction="cks-ws-keyAndSignalization"/>
      <wsdl:input>
    	<soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
    	<soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    

    10.5.5 -定义ws的名称

    port[address] 定义ws绑定的地址
    
    //示例
    <wsdl:service name="KeyAndSignalizationV1Service"> 
    	<wsdl:port name="KeyAndSignalizationV1SoapPort" binding="tns:KeyAndSignalizationV1SoapBinding">
    		<soap:address location="cks-ws-keyAndSignalization" />
    	</wsdl:port> 
    </wsdl:service>
    
  • 相关阅读:
    问题详情-手机问问
    红萝卜要不要削皮?
    清炖香菇
    如何清洗新鲜的香菇
    青菜粥的做法
    Qt移动版优化后台云服务、支持跨平台开发
    EF架构~EF异步改造之路~仓储接口的改造~续
    EF架构~EF6配置需要注意的几个地方
    EF架构~EF异步改造之路~让DbContextRepository去实现异步接口
    EF架构~EF异步改造之路~仓储接口的改造
  • 原文地址:https://www.cnblogs.com/Desneo/p/7491407.html
Copyright © 2020-2023  润新知