`
hongzhguan
  • 浏览: 273036 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

常见Webservice客户端调用方式

阅读更多

webservice客户端调用方法总结
1、AXIS调用

a、直接调用。{
适合比较那种返回比较简单的数据的service, 比如,天气预报,这些内容肯定可以通过一个很简单的xml来返回。
Service service = new Service() ;
                Call call = (Call)service.createCall() ;  
                call.setTargetEndpointAddress(PntCodeTypeManager.getInstance().getTypeValue("TUXEDO_CONFIG", "URL")) ;  
                call.setOperationName("orderFlowSumReq") ;
                call.addParameter("v-ORDER-FLOW-SUM-XML-REQ",org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN) ;  
                call.setReturnType(XMLType.XSD_STRING) ;  
                call.setUseSOAPAction(true) ;  
                String result = (String) call.invoke(new Object[]{xml}) ;

b、通过wsdl2java工具生成调用代码。{
打开控制台,进入axis2-1.4/bin目录
wsdl2java.bat -uri http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl -p ws.clinet.axis2
}


2、xfire调用

a、通过WSDL地址来创建动态客户端。
{
Client client = new Client(new URL("http://127.0.0.1:8080/XFire_demo/services/XFireServer?wsdl")); 
        Object[] results11 = client.invoke("sayHello", new Object[]{"Jadyer22"}); 
        System.out.println(results11[0]); 
}
b、通过服务端提供的端口来创建客户端

/**
* 通过Web服务端提供的接口来创建客户端
* @see 客户端必须提供一个与服务端完全一致的接口,包名也要一致
* @see 在本例中,需要在客户端(即该项目)中提供HelloService.java接口,以及Person和User两个POJO类
* @see 并且此时需要在项目中引入XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries
*/ 
XFireProxyFactory factory = new XFireProxyFactory(); 
        //通过proxyFactory,使用服务模型serviceModel和服务端点URL(用来获得WSDL)  
        //得到一个服务的本地代理,这个代理就是实际的客户端  
        HelloService client = (HelloService)factory.create(serviceModel, serviceURL); 
/**
        * Invoke the service
        * @see 调用服务的本地代理(即实际的客户端)中的方法,便得到我们需要的WebServcie
       */ 
         
        /*--处理简单对象--*/ 
        String serviceResponse = client.sayHello("Jadyer11"); 
        System.out.println(serviceResponse); 
         
        /*--处理对象--*/ 
        User u = new User(); 
       u.setName("Jadyer99"); 
        Person pp = client.getPerson(u); 
        System.out.println(pp.getName()); 
         
        /*--处理List--*/ 
        List<Person> personList = client.getPersonList(24, "Jadyer88"); 
        for(Person p : personList){ 
            System.out.println(p.getName()); 
        } 

c、基于XFire框架利用ant构建WebService的客户端程序 ,
   详细配置:可参考博客http://blog.csdn.net/emailed/article/details/4267932

3、HttpClient调用
用到的jar文件:commons-httpclient-3.1.jar
{
然后定义一个PostMethod,这时需要指定web服务的Url;


PostMethod postMethod = new PostMethod(“http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx”);

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


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请求


HttpClient httpClient = new HttpClient();
statusCode = httpClient.executeMethod(postMethod);
String soapRequestData =  postMethod.getResponseBodyAsString();
}

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

分享到:
评论

相关推荐

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    WebService客户端调用服务器数据库

    WebService客户端调用服务器数据库是分布式系统中常见的交互方式,它允许客户端应用程序通过网络与服务器上的数据库进行通信。本文将深入探讨这一技术,并基于提供的标签“源码”和“工具”来解析实现这一功能的关键...

    客户端调用webservice方式一(soap请求)

    客户端通过SOAP请求调用WebService是一种常见的跨平台通信方式,适用于各种编程语言。理解SOAP消息的结构和HTTP请求的原理,是进行此类通信的关键。在实际开发中,开发者通常会使用库或框架(如Java的JAX-WS,.NET的...

    客户端编程方式调用webservice

    在本案例中,文件`ws_client03`可能包含了客户端调用WebService的代码示例,而`ws_server`则可能是WebService的服务端实现。通常,服务器端代码会定义服务接口和实现,然后通过一个容器(如Tomcat)部署,使其可以...

    C#.NET WebService 客户端+服务器

    - **客户端HttpWebRequest方式**:这是一种较低级别的调用方式,直接使用C#的System.Net命名空间中的HttpWebRequest和HttpWebResponse类来构造HTTP请求和处理响应。这种方式灵活性较高,但需要手动处理XML解析和...

    WebService客户端

    在开发WebService客户端时,有几种常见的实现方式: 1. **SOAP(简单对象访问协议)客户端**:SOAP是WebService最原始的数据交换格式,它基于XML,提供了一种标准的请求-响应模型。开发者可以使用SOAP库,如Java的...

    Xfire客户端调用webservice jar包

    在这个场景下,"Xfire客户端调用webservice jar包"是指Xfire客户端为了实现某些功能,如获取服务器数据或更新信息,需要调用Web服务的接口。这些接口通常以Java的jar包形式提供,方便开发者集成到他们的应用中。 ...

    QT环境下Webservice服务调用,客户端

    在QT环境下进行Web服务(Webservice)调用是软件开发中的常见需求,特别是当需要与Java环境下的服务器端进行交互时。...通过以上步骤,你可以构建出一个有效的Webservice客户端,实现与Java服务器的无缝通信。

    采用客户端函数方法调用WebService的程序例子

    在.NET环境中,调用Web服务(WebService)是常见的任务,特别是在构建分布式系统或者跨平台通信时。本示例将深入探讨如何使用客户端函数方法来调用WebService,这对于理解和实现相关功能至关重要。 首先,...

    axis2客户端调用webService接口,精简jar包

    总的来说,使用Axis2客户端调用WebService接口是一种常见的开发实践,通过精简jar包可以优化项目的体积,提高部署效率。理解这个过程并掌握如何精简jar包,对于任何涉及到Web服务的开发工作都是十分有益的。

    webservice四种发布方式及客户端调用

    以上介绍了 WebService 的四种常见发布方式及其客户端调用方法。每种方式都有其特点和适用场景。CXF 以其强大的功能和与 Spring 的良好集成成为首选;XFire 虽然已经过时但仍然有其独特之处;Axis2 和 Axis1 分别...

    使用wsimport命令生成webService客户端代码实例(查询手机号码)(源码Demo)

    在Java开发中,Web服务是实现跨平台、跨语言通信的一种常见方式,而WebService客户端的创建则至关重要。本文将深入探讨如何使用`wsimport`命令生成WebService客户端代码,并通过一个查询手机号码的实际示例来演示...

    cxf开发webservice客户端和服务器端文档

    cxf开发webservice客户端和服务器端 cxf(Apache CXF)是一款开源的WebService框架,用于开发webservice客户端和服务器端。它提供了许多有用的功能,如自动生成服务桩、客户调用桩和WSDL文档等,使得开发webservice...

    Eclipse根据wsdl文件逆向生成webservice客户端项目源码

    本文将详细介绍如何在Eclipse环境中,利用WSDL文件逆向生成WebService客户端项目的源码。 首先,WSDL文件是一个XML格式的文档,它描述了Web服务的接口、操作、消息格式以及服务的位置。这个文件是服务提供者发布的...

    myeclipse发布webservice并且建立客户端调用

    在IT行业中,开发Web服务是常见的任务之一,而MyEclipse作为一款强大的集成开发环境(IDE),对于Java Web项目的开发提供了强大的支持,包括创建和发布Web服务以及建立客户端进行调用。下面我们将深入探讨如何使用...

    在自己的项目中利用axis2+spring发布webservice与客户端调用包括session

    标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...

    java调用WebService客户端.pdf

    在Java中调用WebService客户端是开发中常见的任务,主要用于与远程服务器进行数据交互。这篇PDF文档主要介绍了四种调用WebService的方式:HttpGet、HttpPost、HttpSoap和Documentation,并且提供了一个使用Apache ...

    C#调用JavaWebService(客户端)

    2. **C#客户端调用**: 在C#中,我们可以利用.NET Framework提供的`System.ServiceModel`命名空间,尤其是`SoapHttpClientProtocol`类(在较新版本中,可以使用`System.ServiceModel.ClientBase&lt;TChannel&gt;`或`...

    WebService服务的三种调用方式

    本文将详细介绍基于SOAP协议的远程WebService服务的三种常见调用方式,帮助开发者根据实际需求选择最合适的方法进行服务调用。 #### 一、直接通过Axis调用远程WebService Axis是Apache组织下的一个开源项目,它...

Global site tag (gtag.js) - Google Analytics