WSDL文件解析與處理


WSDL文件解析與處理

一、背景

  在工作的時候,偶爾會和第三方系統接口發送數據。他們除了可能會提供接口文檔的方式,也可能會提供一個WSDL文件。第一次拿到WSDL文件可能會不知道如何去使用,此次記錄一下自己在一個項目中遇到的WSDL文件處理。(方案多來自於其他博客)

二、根據WSDL,基於wsimport生成代碼的客戶端

  wsimport是jdk自帶的命令,在使用之前。需要使 用終端(win+ R)進入到本地安裝jdk的bin目錄下 

#wsimport 命令使用
wsimport -keep -p com.wjin.sim.service.userService -d E:/ll http://localhost:8080/sim/service/userService?wsdl
  比較常用的[options]有:
  1. -d <directory>
       在指定的目錄生成class文件
  2. -clientjar <jarfile>
       在當前目錄生成jar文件,結合-d <directory>可以在指定的目錄生成jar文件
  3. -s <directory>
       在指定的目錄生成java源文件
  4. -p <pkg>
       指定生成文件的包結構
  5. -keep
       在生成class文件,或者jar包時,同時保留java源文件
 
生成的文件代碼如下圖:

 

 

三、瀏覽器查看wsdl頁面,各個標簽含義

  在瀏覽器直接輸入wsdl文件的路徑,如:http://localhost:8080/sim/service/userService?wsdl。就會出現下圖頁面:

 

 

標簽簡介:

內容參考自:https://www.cnblogs.com/ChrisMurphy/p/5224314.html

 * type元素,定義了交換信息的數據格式。

 * 為了實現最大的互操作性(interoperability)和平台中立性(neutrality),WSDL選用XML Schema DataTypes

 * 簡稱XSD作為標准類型系統,並將它作為固有類型系統。

<wsdl:definitions xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" 
xmlns:wsdl
="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns
="http://impl.XXXXXXX" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap11
="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsdlsoap
="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc11
="http://schemas.xmlsoap.org/soap/encoding/"
targetNamespace
="http://impl.XXXXXX">   <wsdl:types>     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://impl.XXXXXX">       <xsd:element name="add">         <xsd:complexType>           <xsd:sequence>           <xsd:element maxOccurs="1" minOccurs="1" name="uid" nillable="true" type="xsd:string"/>           <xsd:element maxOccurs="1" minOccurs="1" name="name" nillable="true" type="xsd:string"/>           <xsd:element maxOccurs="1" minOccurs="1" name="orgId" nillable="true" type="xsd:string"/>           <xsd:element maxOccurs="1" minOccurs="1" name="userTypeId" nillable="true" type="xsd:long"/>           <xsd:element maxOccurs="1" minOccurs="1" name="contentXml" nillable="true" type="xsd:string"/>         </xsd:sequence>       </xsd:complexType>      </xsd:element>

 

* message元素指定XML 數據類型組成消息的各個部分。message元素用於定義操作的輸入和輸出參數。

 * 元素是我們前面定義 *的types中的元素;

 * 如果采用RPC樣式的消息傳遞,只需要將文檔中的element元素應以修改為type即可。

 

 * service元素。服務元素包含一組port元素。端口將端點與來自服務接口定義的binding 元素關聯起來。

 * port指定一個綁定的地址,這樣定義一個通信的終端。

 *service:一個webservice的容器

 *name:它用以指定一個服務器處理端口請求的入口(就是SEI的實現)

 * binding:引用上面定義的<binding>

 *address:當前webservice的請求地址

<wsdl:service name="userService">
  <wsdl:port name="userServiceHttpPort" binding="tns:userServiceHttpBinding">
    <wsdlsoap:address location="http://cnsvwshvm12093.csvw.com:9080/sim/service/userService"/>
  </wsdl:port>
</wsdl:service>

 

 

 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM