`

JAVA 调用Web Service的方法

阅读更多

1.使用HttpClient
用到的jar文件:commons-httpclient-3.1.jar
方法:
预先定义好Soap请求数据,可以借助于XMLSpy Professional软件来做这一步生成。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
    
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" +
      "<soap12:Body>" +
       
" <getCountryCityByIp xmlns=\"http://WebXml.com.cn/\">" +
      "    <theIpAddress>219.137.167.157</theIpAddress>" +
     
"   </getCountryCityByIp>" +
    
"  </soap12:Body>" +
    
"</soap12:Envelope>";

 

然后定义一个PostMethod,这时需要指定web服务的Url;

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->PostMethod postMethod = new PostMethod(“http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx”);

 

然后把Soap请求数据添加到PostMethod中

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->byte[] b = soapRequestData.getBytes("utf-8");
InputStream is 
= new ByteArrayInputStream(b,0,b.length);
RequestEntity re 
= new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8");
postMethod.setRequestEntity(re);

 

 

最后生成一个HttpClient对象,并发出postMethod请求

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->HttpClient httpClient = new HttpClient();
statusCode 
= httpClient.executeMethod(postMethod);
String soapRequestData 
=  postMethod.getResponseBodyAsString();

 

 

soapRequestData就是调用web服务的Soap响应数据,是xml格式的,可以通过解析soapRequestData来获得调用web服务的返回值。

2.使用Xfire
用到的jar文件xfire-all-1.2.4.jar, jdom-1.0.jar
方法:
定义一个Client对象,指定web服务的wsdl的地址

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Client c = new Client(new URL(“http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl”));

 

 

调用Client对象的invoke方法,指定web服务的方法名,和参数,返回值是一个Object型的数组。
下面代码调用getVersionTime方法,这个方法没有参数用所以后一个参数使用new Object[0]。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Object[] results = c.invoke(“getVersionTime”, new Object[0]);

 

 

3.使用axis2
下载axis2-1.4
方法:
打开控制台,进入axis2-1.4/bin目录

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wsdl2java.bat -uri http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl -p ws.clinet.axis2


上述命令执行完后,会在当前目录下生成一个src目录,在src\ ws\ clinet\ axis2目录里生成XXXXCallbackHandler.java和XXXXStub.java两个文件。
wsdl2java 会根据wsdl文件生成web服务的调用接口,参数类,返回值的类。
在调用webservice的时候直接实例化一个XXXXStub的对象,然后调用web服务的方法就可以了。

 

4. 总结
针对某种工具搭建的Web Service服务可能有与其对应的更简单的调用方法,在这里没有做描述,上述的调用web服务的方法是通用的。
上述三种方法中使用httpclient应该是比较灵活,但是开发效率低,难度大,使用Xfire和axis2比较容易,开发速度快,但是axis2通用性不好,有的web服务用axis2不好用。httpclient和Xfire通用性比较好,鉴于以上特点推荐使用Xfire。

分享到:
评论

相关推荐

    Java调用.NET web service

    5. **调用Web Service**:使用Java客户端代理类的方法,传入参数,执行Web Service的远程调用。如果需要传递自定义类,确保这些类在Java和.NET中都有对应的序列化实现。 6. **处理响应**:Web Service调用完成后,...

    java 调用 web seervice 方法

    总的来说,Java 中调用 Web Service 可以通过多种方式实现,选择哪种方法取决于项目需求、性能考虑以及团队对特定库的熟悉程度。HttpClient 提供了基础的 HTTP 请求功能,适合简单的 Web Service 调用;Xfire 提供了...

    java调用java web service

    Java调用Java Web Service是Java开发中的一个常见任务,它涉及到Web服务的消费与交互,主要基于SOAP(Simple Object Access Protocol)协议。本篇将详细阐述这个过程,并结合标签“源码”和“工具”,探讨如何通过源...

    JAVA程序调用Web Service示例过程演示

    在IT领域,尤其是在软件开发与集成的过程中,Java作为一种广泛应用的编程语言,其调用Web Service的能力是连接不同系统和服务的关键技术之一。以下是对“JAVA程序调用Web Service示例过程演示”这一主题的深入解析,...

    ASP.net 中用C#调用Java web service 图解教程

    ASP.NET 中使用 C# 调用 Java Web Service ...在 ASP.NET 中使用 C# 调用 Java Web Service 需要了解 Web Service 的基本概念、使用 C# 调用 Java Web Service 和在 ASP.NET 中实现 Web Service 的客户端和服务器端。

    JAVA调用.NETWeb Service完整代码

    这些类包含了调用Web Service所需的所有方法和数据类型。 3. 创建代理对象:在Java代码中,实例化生成的代理类对象,这将连接到.NET Web Service。 4. 调用服务方法:通过代理对象调用.NET Web Service的方法,...

    JSP Java 调用Web Service

    JSP 调用天气预报Web服务,数据来源于中国气象局http://www.cma.gov.cn/ ,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。

    Java调用Web服务(Web Services),如此简单

    本篇将重点讲解如何使用Java调用Web服务,特别是基于.NET平台的ASMX(ASP.NET Web Services)服务。 首先,`AccountService.asmx`和`Service.asmx`是.NET平台创建的ASMX Web服务文件。这些文件包含了定义服务的方法...

    java 调用天气web service的完整项目eclipse

    Java调用天气Web Service的完整项目是开发人员学习和实践中常用的一个示例,它展示了如何在Java环境中通过Eclipse IDE与Web服务进行交互,获取并处理天气数据。在这个项目中,我们将关注以下几个核心知识点: 1. **...

    java 调用https webservice实例及axis包

    4. **调用Web Service**:使用生成的客户端代理类,通过其方法调用Web Service。注意,由于是HTTPS,所以在调用前可能需要建立SSL连接,处理身份验证等安全操作。 5. **处理异常**:在调用过程中,可能会遇到SSL...

    java 调用 odi webservice

    我们可以使用 MYEclipse 创建一个新的 Web Service 项目,并选择 JAX-WS 框架生成 webservice。 在创建完毕后,我们可以看到生成的 webservice 类,如下图所示。 现在,我们可以使用这些类来访问 ODI 的 ...

    XFire 1.2.6调用Web Service的几种方法

    XFire 1.2.6 调用 Web Service 的几种方法 XFire 1.2.6 是一个流行的开源 Web 服务框架,提供了多种调用 Web 服务的方法。了解这些方法对于开发高效、可靠的 Web 服务客户端非常重要。本文将详细介绍 XFire 1.2.6 ...

    java调用webservices

    ### Java调用WebServices知识点详解 #### 一、概述 在现代软件开发中,WebServices是一种重要的技术,它允许不同应用程序之间通过网络进行通信。Java作为一种广泛使用的编程语言,在调用WebServices方面提供了丰富...

    java调用.net发布的webservice(asmx)

    本文将详细讲解如何使用Java调用.NET发布的Web Service(ASMX),并解决在此过程中可能出现的SOAPAction报错和“Server not identified”错误。 首先,我们需要了解ASMX。ASMX是.NET Framework早期版本中用于创建...

    Java 调用.NET web服务

    5. **处理SOAP消息**: 在调用Web服务方法时,Java会自动封装和解封装SOAP消息。如果有自定义的数据类型,需要确保Java和.NET之间的数据类型匹配,否则可能需要定义Java类型来映射.NET类型。 6. **异常处理**: 调用...

    java调用webservice接口方法

    Java调用WebService接口方法是Java开发中常见的任务,尤其在分布式系统和跨平台通信中扮演着重要角色。这里我们主要探讨使用Apache Axis库来实现这一功能。Apache Axis是一款开源工具,它提供了Java到SOAP(简单对象...

Global site tag (gtag.js) - Google Analytics