Java调用WebService客户端实现及四种调用方式

5星 · 超过95%的资源 需积分: 34 58 下载量 23 浏览量 更新于2024-09-14 收藏 47KB DOC 举报
"这篇内容主要介绍了如何使用Java作为客户端调用WebService的相关知识,包括四种不同的调用方式:HttpGet、HTTPPost、HTTPSoap以及Documentation,并提供了CXF框架下的调用示例代码。" 在Java中调用WebService客户端,通常是为了与远程服务进行交互,获取或传递数据。本篇内容主要涵盖了四种常见的调用方法,每种方法都有其特定的用途和特点: 1. HttpGet:这种调用方式将参数通过HTTP请求URL的查询字符串传递。这种方式简单直观,适用于参数较少且不涉及敏感信息的情况。返回值是XML文档,但不包含`<soap:Envelope>`标签。 2. HTTPPost:与HttpGet类似,HTTPPost也通过HTTP请求传递参数,但参数位于请求的主体部分,而不是URL中。这种方式适用于传递大量数据或者敏感信息,因为它们不会出现在URL中。 3. HTTPSoap:SOAP(Simple Object Access Protocol)协议是Web服务的标准通信协议,HTTPSoap就是通过HTTP传输SOAP消息。它在请求和响应的主体中都包含完整的SOAP封装,适合复杂的服务交互。 4. Documentation:在启用此协议时,如果直接请求.asmx页面,Asp.Net会生成一个HTML文档页面,这个页面用于向客户端展示服务的文档信息,帮助开发者了解服务接口。 对于SOAP协议,文章提到了Apache CXF框架,它是一个开源的Java库,用于创建和消费Web服务。CXF允许动态地创建Web服务客户端,使得无需预先知道服务的WSDL(Web Service Description Language)也能调用服务。以下是CXF调用示例的部分代码: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; // 创建CXF客户端 JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf.createClient("http://service.example.com/MyService?wsdl"); // 设置参数和调用服务 String[] params = {"param1", "param2"}; Object[] response = client.invoke("myMethod", params); // 处理返回结果 // ... ``` 以上代码首先通过`JaxWsDynamicClientFactory`创建了一个CXF客户端,然后调用了名为`myMethod`的服务方法,并传入了参数`param1`和`param2`。调用完成后,可以通过`response`对象处理服务返回的数据。 总结来说,Java调用WebService客户端涉及的技术包括HTTP协议、SOAP协议以及如CXF这样的框架,它们共同构成了Web服务客户端的核心能力,使得Java应用能够与远程Web服务进行有效沟通。在实际开发中,选择合适的调用方式和工具,可以极大地提高开发效率和代码的可维护性。