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
常见Webservice客户端调用方式
发布时间:2020-12-16 23:13:38 所属栏目:安全 来源:网络整理
导读:webservice客户端调用方法总结 1、AXIS调用 { a、直接调用。{ 适合比较那种返回比较简单的数据的service,比如,天气预报,这些内容肯定可以通过一个很简单的xml来返回。 Service service = new Service() ; ??????????????? Call call = (Call)service.cre
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |