`
hongzhguan
  • 浏览: 270189 次
  • 性别: 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

分享到:
评论

相关推荐

    webservice,IIS常见问题

    webservice发布;IIS部署。常见问题,如果还解决不了您的问题,尽管联系小编。

    pb调用webservice(pb客户端+java服务端).zip

    PB调用webservice 是常见的一种必备技术,但是好多工具都可以去写webservice ,该webservice为 jdk1.8 ,eclipse 写的。

    Xfire的client.zip_Xfire客户端代码_webservice

    webservice服务,使用Xfire框架调用服务的常见客户端代码

    webservice教程

    WebService是一种跨编程语言和跨操作系统...除了WebService外,常见的远程调用技术还有RMI(Remote method invoke)和CORBA,由于WebService的跨平台和跨编程语言特点,因此比其他两种技术应用更为广泛,但性能略低。

    Web_Service开发指南电子版 PDF

    只要WebService公开了服务接口,远程客户端就可以调用服务。WebService 是基于Http协议的组件服务,WebService是分散式应用程序的发展趋势。 WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言...

    浅谈WebService的版本兼容性设计

    近年来越来越多的企业或者网站支持Restfull方式的WebService,比如当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用,这个是Java版本的,在.NET中ServiceStack天生支持Restfull风格的WebService。...

    基于Sanic实现一个jsRpc框架

    该框架提供了一种简单而高效的方式来实现跨平台的远程过程调用。 描述: 这个博客资源详细介绍了如何使用Sanic框架构建一个强大而灵活的jsRpc框架,以便在不同的前端和后端应用之间进行远程过程调用。jsRpc是一种...

    werpc:一个简单的rpc框架

    werpc 微RPC 介绍 A simple rpc framework —— werpc. ...客户端处理过程中调用Client stub(就像代用本地方法一样),传入参数; Client stub 将参数编织为消息,通过网络向服务端发送消息; 服务端Ser

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    2.1.1 MVC和常见MVC框架 52 2.1.2 JSF的优势 56 2.2 下载和安装JSF 57 2.3 JSF使用入门 60 2.3.1 从输入页面开始 60 2.3.2 开发托管Bean 61 2.3.3 定义导航规则 63 2.4 解读JSF配置 65 2.4.1 配置核心控制器...

    asp.net知识库

    如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值在2个页面之间 :要求不刷新父页面,并且...

    log4Net详解(共2讲)

    例如新的请求到达、待处理请求、超时未处理请求、员工工单发放提配、员工工单按时提交提醒、请求递交被处理状况等,系统都设定了多种提醒功能(短信通知-调用飞信WebService接口、QQ通知-调用QQ Webservice提醒及...

    ASP.NET2.0高级编程(第4版)1/6

    26.2.1 WebService页面指令946 26.2.2 查看Web服务的  基类文件946 26.2.3 把定制的数据集  显示为SOAP948 26.2.4 XML Web服务接口950 26.3 使用简单的XML Web服务953 26.3.1 添加Web引用953 26.3.2 在客户应用...

    C#与.NET技术平台实战演练.part2

    本书将C#的特色与应用,借助实战演练的方式,阶段性地引导读者建置完整的应用程序,是您掌握新技术的最佳捷径。【图书目录】-C#与.NET技术平台实战演练PARTI基础语法篇第1章.NET概述1-1 软件开发结构的演进1-2 ...

    C#与.NET技术平台实战演练.part1

    本书将C#的特色与应用,借助实战演练的方式,阶段性地引导读者建置完整的应用程序,是您掌握新技术的最佳捷径。【图书目录】-C#与.NET技术平台实战演练PARTI基础语法篇第1章.NET概述1-1 软件开发结构的演进1-2 ...

    最新Java面试宝典pdf版

    44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 29 46、java中有几种方法可以实现一个线程...

    Java面试宝典2010版

    13、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置? 14、如何查看在weblogic中已经发布的EJB? 十. EBJ部分 1、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,...

    Java面试笔试资料大全

    44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 29 46、java中有几种方法可以实现一个线程...

Global site tag (gtag.js) - Google Analytics