微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

常见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,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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐