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] 举报,一经查实,本站将立刻删除。