跳到主要内容WSDL 详解:WebService 接口说明书与结构解析 | 极客日志Javajava
WSDL 详解:WebService 接口说明书与结构解析
WSDL 全称 Web Services Description Language,即 Web 服务描述语言,用于描述 WebService 的接口地址、方法、参数及返回格式。它作为接口说明书,配合 SOAP 协议使用,支持自动生成代码、统一接口规范及方便调试。WSDL 文件基于 XML 格式,包含 types、message、portType、binding、service 等核心部分,是企业级系统对接的关键组件。
什么是 WSDL?
WSDL 的全称是 Web Services Description Language,中文可以叫做'Web 服务描述语言'。
打个比方:
你把 WebService 想象成一个自动售货机,WSDL 就是这台机器的说明书。
它告诉你:
- 机器在哪里?(接口地址)
- 机器卖什么东西?(提供哪些方法)
- 怎么操作这台机器?(方法需要哪些参数)
- 机器会给你什么?(返回结果格式)
- 你跟机器对话用啥语言?(协议和数据格式)
WSDL 和 SOAP 的关系
- SOAP 是'怎么说话'的语言,用 XML 格式传输数据。
- WSDL 是'说明书',告诉你怎么用 SOAP 正确说话。
换句话说,没有 WSDL,你就不知道该怎么给 WebService 发对的请求,也不知道怎么解析它给你的回应。
WSDL 的主要结构有哪些?
WSDL 文件本质是 XML 格式,包含几个重要的部分:
| 部分名称 | 作用 | 通俗理解 |
|---|
| types | 定义接口中使用的数据类型 | 说明商品的种类和规格 |
| message | 定义接口传输的数据结构 | 你跟机器说话的句子格式 |
| portType | 定义接口有哪些方法及参数 | 机器能做哪些动作 |
| binding | 绑定具体协议(SOAP 1.1/1.2 等) | 你说话用的语言和规则 |
| service | 定义服务地址和端口 | 机器的具体位置 |
为什么 WSDL 很重要?
- 自动化生成代码
通过 WSDL,开发工具可以帮你自动生成接口调用代码,不用手写复杂的 XML。
- 保证接口规范统一
提供方和调用方都按照同一本说明书来开发,避免沟通错误。
- 方便接口调试
调试工具(如 SoapUI)导入 WSDL 后,可以自动生成测试请求。
举个例子:WSDL 简单样子
<definitions name="WeatherService" targetNamespace="http://example.com/weather" xmlns:tns="http://example.com/weather" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd= =>
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
"http://www.w3.org/2001/XMLSchema"
xmlns
"http://schemas.xmlsoap.org/wsdl/"
<types>
<xsd:schema targetNamespace="http://example.com/weather">
<xsd:element name="GetWeatherRequest" type="xsd:string"/>
<xsd:element name="GetWeatherResponse" type="xsd:string"/>
</xsd:schema>
</types>
<message name="GetWeatherRequestMessage">
<part name="cityName" element="tns:GetWeatherRequest"/>
</message>
<message name="GetWeatherResponseMessage">
<part name="result" element="tns:GetWeatherResponse"/>
</message>
<portType name="WeatherPortType">
<operation name="GetWeather">
<input message="tns:GetWeatherRequestMessage"/>
<output message="tns:GetWeatherResponseMessage"/>
</operation>
</portType>
<binding name="WeatherBinding" type="tns:WeatherPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetWeather">
<soap:operation soapAction="http://example.com/GetWeather"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="WeatherService">
<port name="WeatherPort" binding="tns:WeatherBinding">
<soap:address location="http://api.example.com/weatherService"/>
</port>
</service>
</definitions>
这就是 WSDL 的样子,虽然看起来复杂,但它就是把'说明书'写得很详细,让你能准确调用接口。
总结
- WSDL 是 WebService 的接口说明书,用 XML 写成;
- 它告诉你:接口方法、参数、返回格式、调用地址和用什么协议;
- 你用 WSDL 可以自动生成调用代码和调试请求;
- 企业级系统对接离不开 WSDL,不看懂它很难高效开发。