WebService是一种跨编程语言、跨操作系统平台的远程调用技术,已存在很多年了,很多接口也都是通过WebService方式来发布的;本系列文章主要介绍Java调用WebService的各种方法,使用在线的中文简体字<->繁体字转换服务(http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx)作为测试服务端,使用其中的简体字转换为繁体字方法toTraditionalChinese来演示WebService的调用。本文主要做些准备工作,方便后续文章中实际的调用。
1、WSDL
为了防止该在线WebService不可用,这里把WSDL贴在这里,方便与代码对照。
http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl
This XML file does not appear to have any style information associated with it. The document tree is shown below. <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://webxml.com.cn/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webxml.com.cn/"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <a href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a> <strong>中文简体字<->繁体字转换 WEB 服务</strong><br />此中文简体字<->繁体字转换Web Services请不要用于任何商业目的,若有需要请<a href="http://www.webxml.com.cn/zh_cn/contact_us.aspx" target="_blank">联系我们</a>,欢迎技术交流。 QQ:8409035<br /><strong>使用本站 WEB 服务请注明或链接本站:http://www.webxml.com.cn/ 感谢大家的支持</strong>!<br /><br /> </wsdl:documentation> <wsdl:types> <s:schema elementFormDefault="qualified" targetNamespace="http://webxml.com.cn/"> <s:element name="toSimplifiedChinese"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="sText" type="s:string"/> </s:sequence> </s:complexType> </s:element> <s:element name="toSimplifiedChineseResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="toSimplifiedChineseResult" type="s:string"/> </s:sequence> </s:complexType> </s:element> <s:element name="toTraditionalChinese"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="sText" type="s:string"/> </s:sequence> </s:complexType> </s:element> <s:element name="toTraditionalChineseResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="toTraditionalChineseResult" type="s:string"/> </s:sequence> </s:complexType> </s:element> <s:element name="string" nillable="true" type="s:string"/> </s:schema> </wsdl:types> <wsdl:message name="toSimplifiedChineseSoapIn"> <wsdl:part name="parameters" element="tns:toSimplifiedChinese"/> </wsdl:message> <wsdl:message name="toSimplifiedChineseSoapOut"> <wsdl:part name="parameters" element="tns:toSimplifiedChineseResponse"/> </wsdl:message> <wsdl:message name="toTraditionalChineseSoapIn"> <wsdl:part name="parameters" element="tns:toTraditionalChinese"/> </wsdl:message> <wsdl:message name="toTraditionalChineseSoapOut"> <wsdl:part name="parameters" element="tns:toTraditionalChineseResponse"/> </wsdl:message> <wsdl:message name="toSimplifiedChineseHttpGetIn"> <wsdl:part name="sText" type="s:string"/> </wsdl:message> <wsdl:message name="toSimplifiedChineseHttpGetOut"> <wsdl:part name="Body" element="tns:string"/> </wsdl:message> <wsdl:message name="toTraditionalChineseHttpGetIn"> <wsdl:part name="sText" type="s:string"/> </wsdl:message> <wsdl:message name="toTraditionalChineseHttpGetOut"> <wsdl:part name="Body" element="tns:string"/> </wsdl:message> <wsdl:message name="toSimplifiedChineseHttpPostIn"> <wsdl:part name="sText" type="s:string"/> </wsdl:message> <wsdl:message name="toSimplifiedChineseHttpPostOut"> <wsdl:part name="Body" element="tns:string"/> </wsdl:message> <wsdl:message name="toTraditionalChineseHttpPostIn"> <wsdl:part name="sText" type="s:string"/> </wsdl:message> <wsdl:message name="toTraditionalChineseHttpPostOut"> <wsdl:part name="Body" element="tns:string"/> </wsdl:message> <wsdl:portType name="TraditionalSimplifiedWebServiceSoap"> <wsdl:operation name="toSimplifiedChinese"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <br /><h3>繁体字转换为简体字</h3><p>输入参数:sText = 字符串; 返回数据:字符串。</p><br /> </wsdl:documentation> <wsdl:input message="tns:toSimplifiedChineseSoapIn"/> <wsdl:output message="tns:toSimplifiedChineseSoapOut"/> </wsdl:operation> <wsdl:operation name="toTraditionalChinese"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <br /><h3>简体字转换为繁体字</h3><p>输入参数:sText = 字符串; 返回数据:字符串。</p><br /> </wsdl:documentation> <wsdl:input message="tns:toTraditionalChineseSoapIn"/> <wsdl:output message="tns:toTraditionalChineseSoapOut"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name="TraditionalSimplifiedWebServiceHttpGet"> <wsdl:operation name="toSimplifiedChinese"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <br /><h3>繁体字转换为简体字</h3><p>输入参数:sText = 字符串; 返回数据:字符串。</p><br /> </wsdl:documentation> <wsdl:input message="tns:toSimplifiedChineseHttpGetIn"/> <wsdl:output message="tns:toSimplifiedChineseHttpGetOut"/> </wsdl:operation> <wsdl:operation name="toTraditionalChinese"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <br /><h3>简体字转换为繁体字</h3><p>输入参数:sText = 字符串; 返回数据:字符串。</p><br /> </wsdl:documentation> <wsdl:input message="tns:toTraditionalChineseHttpGetIn"/> <wsdl:output message="tns:toTraditionalChineseHttpGetOut"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name="TraditionalSimplifiedWebServiceHttpPost"> <wsdl:operation name="toSimplifiedChinese"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <br /><h3>繁体字转换为简体字</h3><p>输入参数:sText = 字符串; 返回数据:字符串。</p><br /> </wsdl:documentation> <wsdl:input message="tns:toSimplifiedChineseHttpPostIn"/> <wsdl:output message="tns:toSimplifiedChineseHttpPostOut"/> </wsdl:operation> <wsdl:operation name="toTraditionalChinese"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <br /><h3>简体字转换为繁体字</h3><p>输入参数:sText = 字符串; 返回数据:字符串。</p><br /> </wsdl:documentation> <wsdl:input message="tns:toTraditionalChineseHttpPostIn"/> <wsdl:output message="tns:toTraditionalChineseHttpPostOut"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="TraditionalSimplifiedWebServiceSoap" type="tns:TraditionalSimplifiedWebServiceSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="toSimplifiedChinese"> <soap:operation soapAction="http://webxml.com.cn/toSimplifiedChinese" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="toTraditionalChinese"> <soap:operation soapAction="http://webxml.com.cn/toTraditionalChinese" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="TraditionalSimplifiedWebServiceSoap12" type="tns:TraditionalSimplifiedWebServiceSoap"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="toSimplifiedChinese"> <soap12:operation soapAction="http://webxml.com.cn/toSimplifiedChinese" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="toTraditionalChinese"> <soap12:operation soapAction="http://webxml.com.cn/toTraditionalChinese" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="TraditionalSimplifiedWebServiceHttpGet" type="tns:TraditionalSimplifiedWebServiceHttpGet"> <http:binding verb="GET"/> <wsdl:operation name="toSimplifiedChinese"> <http:operation location="/toSimplifiedChinese"/> <wsdl:input> <http:urlEncoded/> </wsdl:input> <wsdl:output> <mime:mimeXml part="Body"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="toTraditionalChinese"> <http:operation location="/toTraditionalChinese"/> <wsdl:input> <http:urlEncoded/> </wsdl:input> <wsdl:output> <mime:mimeXml part="Body"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="TraditionalSimplifiedWebServiceHttpPost" type="tns:TraditionalSimplifiedWebServiceHttpPost"> <http:binding verb="POST"/> <wsdl:operation name="toSimplifiedChinese"> <http:operation location="/toSimplifiedChinese"/> <wsdl:input> <mime:content type="application/x-www-form-urlencoded"/> </wsdl:input> <wsdl:output> <mime:mimeXml part="Body"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="toTraditionalChinese"> <http:operation location="/toTraditionalChinese"/> <wsdl:input> <mime:content type="application/x-www-form-urlencoded"/> </wsdl:input> <wsdl:output> <mime:mimeXml part="Body"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="TraditionalSimplifiedWebService"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <a href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a> <strong>中文简体字<->繁体字转换 WEB 服务</strong><br />此中文简体字<->繁体字转换Web Services请不要用于任何商业目的,若有需要请<a href="http://www.webxml.com.cn/zh_cn/contact_us.aspx" target="_blank">联系我们</a>,欢迎技术交流。 QQ:8409035<br /><strong>使用本站 WEB 服务请注明或链接本站:http://www.webxml.com.cn/ 感谢大家的支持</strong>!<br /><br /> </wsdl:documentation> <wsdl:port name="TraditionalSimplifiedWebServiceSoap" binding="tns:TraditionalSimplifiedWebServiceSoap"> <soap:address location="http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx"/> </wsdl:port> <wsdl:port name="TraditionalSimplifiedWebServiceSoap12" binding="tns:TraditionalSimplifiedWebServiceSoap12"> <soap12:address location="http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx"/> </wsdl:port> <wsdl:port name="TraditionalSimplifiedWebServiceHttpGet" binding="tns:TraditionalSimplifiedWebServiceHttpGet"> <http:address location="http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx"/> </wsdl:port> <wsdl:port name="TraditionalSimplifiedWebServiceHttpPost" binding="tns:TraditionalSimplifiedWebServiceHttpPost"> <http:address location="http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
2、用SoapUI生成Soap消息
该在线WebService同时实现Soap1.1和Soap1.2,这里分别生成消息。
2.1、Soap1.1
查询xml
查看Raw
2.1、Soap1.2
查看xml
查看Raw
3、本地WebService服务
由于我们用的在线WebService服务端为.NET实现的,而我们客户端是JAVA,如果是RPC方式调用则无法调用;这里创建一个本地的JAX-WS实现的WebService,用于这个系列文章中RPC方式的调用。RPC已经过时,但为了技术的完整性,也记录下。
3.1、接口类
package com.inspur.zsyw.ws; import javax.jws.WebParam; import javax.jws.WebService; @WebService
@SOAPBinding(style = SOAPBinding.Style.RPC) public interface ITestService { String hello(@WebParam(name = "name") String name); }
3.1、实现类
package com.inspur.zsyw.ws.impl; import com.inspur.zsyw.ws.ITestService; @javax.jws.WebService(endpointInterface="com.inspur.zsyw.ws.ITestService", targetNamespace = "http://ws.zsyw.inspur.com/", serviceName = "TestService") public class TestServiceImpl implements ITestService { @Override public String hello(String name) { return "hello," + name; } }
3.3、本地WSDL
http://10.40.103.48:9006/zsywservice/TestService?wsdl
This XML file does not appear to have any style information associated with it. The document tree is shown below. <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5. --> <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5. --> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.zsyw.inspur.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.zsyw.inspur.com/" name="TestService"> <types/> <message name="hello"> <part name="name" type="xsd:string"/> </message> <message name="helloResponse"> <part name="return" type="xsd:string"/> </message> <portType name="ITestService"> <operation name="hello"> <input message="tns:hello"/> <output message="tns:helloResponse"/> </operation> </portType> <binding name="TestServiceImplPortBinding" type="tns:ITestService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> <operation name="hello"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://ws.zsyw.inspur.com/"/> </input> <output> <soap:body use="literal" namespace="http://ws.zsyw.inspur.com/"/> </output> </operation> </binding> <service name="TestService"> <port name="TestServiceImplPort" binding="tns:TestServiceImplPortBinding"> <soap:address location="http://10.40.103.48:9006/zsywservice/TestService"/> </port> </service> </definitions>
4、调用
本文主要介绍一些准备工作,具体调用参见下列文章:
Java调用WebService方法总结(2)--JAX-WS调用WebService
Java调用WebService方法总结(3)--wsimport调用WebService
Java调用WebService方法总结(4)--Axis调用WebService
Java调用WebService方法总结(5)--Axis2调用WebService
Java调用WebService方法总结(6)--XFire调用WebService
Java调用WebService方法总结(7)--CXF调用WebService