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

三、浏览器查看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>