• Java调用WebService方法总结(1)--准备工作


    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 />&nbsp;
    </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 />&nbsp;
    </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>
    View Code

    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>
    View Code

    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

    Java调用WebService方法总结(8)--soap.jar调用WebService

    Java调用WebService方法总结(9,end)--Http方式调用WebService

  • 相关阅读:
    (1)前言——(10)jquery项目的历史(History of the jQuery project)
    JavaScript编程:使用DOM操作样式表
    机房收费系统总结之4——VB.NET 轻松解决判断文本框、组合框为空问题
    协同过滤及大数据处理
    Storm工作流程 vs. Spark Stream
    《大数据技术原理与应用》学习
    gdb的follow-fork-mode使用以及多线程操作
    回上海咯!继续学习计算广告
    美团技术博客
    这里面有一些关于依图工作的内容
  • 原文地址:https://www.cnblogs.com/wuyongyin/p/11850585.html
Copyright © 2020-2023  润新知