WebService客户端代码生成方式总结.doc

上传人:wux****ua 文档编号:9125552 上传时间:2020-04-03 格式:DOC 页数:4 大小:47.52KB
返回 下载 相关 举报
WebService客户端代码生成方式总结.doc_第1页
第1页 / 共4页
WebService客户端代码生成方式总结.doc_第2页
第2页 / 共4页
WebService客户端代码生成方式总结.doc_第3页
第3页 / 共4页
点击查看更多>>
资源描述
一、Webservice可以使用的框架很多。AXIS、CXF 、JAX、XFIRE,这些框架都可以根据wsdl文件生成ws的服务器和客户端代码。二、Ws的调用方式有三种,http post、http get、soap post。本人建议使用http post,他访问远程ws接口的速度比使用soap post要快些。象使用axis框架实现soap post方式来说,简单的接口还好,对于使用了大量代理类及带有soaphead的ws,且还要在本地生成一大堆JAVA类来和服务端对应。特别如下这种情况,axis好像无法实现。Soaphead如下0039434454 67677象这种只能根据org.apache.axis.client.Call.addHead(ElementSoapHead)来增加报头。但这个报头没有根元素,无法创建一个这种Element。下面就如何书写客户端代码详细讲解下。1.通过发送http post请求来调用ws。SOAPUI是个不错的工具,他可以根据wsdl文件生成测试例子。另外重要的是,它可以生成wsdl对应的请求报文和响应报文。这样我们在调用别人写的ws时,不管多复杂的ws都可以简单的调用。首先按照SOAPUI显示的请求报文格式拼装我们的请求报文,使用java.net.HttpURLConnection对象来发送http post请求。然后使用输出流、输出流获得响应报文,再用Element解析报文得到要取的数据。示例代码如下:JAVA类SoapInvoke:package test;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;public class SoapInvoke public static void main(String args) try soapSpecialConnection(); catch (Exception e) e.printStackTrace(); public static void soapSpecialConnection() throws Exception /拼装soap请求报文 StringBuilder sb = new StringBuilder(); StringBuilder soapHeader = new StringBuilder(); soapHeader.append(); soapHeader.append(); soapHeader.append(zhouyun); soapHeader.append(123); soapHeader.append(); soapHeader.append(); soapHeader.append(); soapHeader.append(); soapHeader.append(zhouyun); soapHeader.append(); soapHeader.append(); soapHeader.append(); soapHeader.append(); /设置soap请求报文的相关属性 String url=http:/localhost:8080/CXFServer/SayHelloService; URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setDefaultUseCaches(false); conn.setRequestProperty(Host, localhost:8080); conn.setRequestProperty(Content-Type, text/xml; charset=utf-8); conn.setRequestProperty(Content-Length, String.valueOf(soapHeader.length(); conn.setRequestProperty(SOAPAction, ); conn.setRequestMethod(POST); /定义输出流 OutputStream output = conn.getOutputStream(); if (null != soapHeader) byte b = soapHeader.toString().getBytes(utf-8); /发送soap请求报文 output.write(b, 0, b.length); output.flush(); output.close(); /定义输入流,获取soap响应报文 InputStream input = conn.getInputStream(); int c = -1; /sb为返回的soap响应报文字符串 while (-1 != (c = input.read() sb.append(char)c); input.close(); 2.通过axis来调用ws。对于使用了复杂代理类的ws,我们在调用时可以使用AXIS、CXF、xfire架包来自动生成ws客户端JAVA代码。下面以axis为例,来展示。服务器端主要JAVA代码package test;import javax.jws.WebService;WebServicepublic class SayHelloImpl implements SayHelloService public wsResult sayHelloMr(String name) wsResult retObj = new wsResult();retObj.setResultVal(Hello,mr + name);return retObj;public wsResult sayHelloMiss(InputClass input) wsResult retObj = new wsResult();retObj.setResultVal(Hello,Miss + input.getName();return retObj;客户端:1)新建wsdltojava.bat文件,放到C盘,文件内容如下:set Axis_Lib=E:axis-bin-1_4axis-1_4libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http:/localhost:8080/CXFServer/SayHelloService?wsdl%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -u %Axis_Servlet%其中Axis_Lib为本地axis架包的路径;Axis_Servlet为本地ws的URL,这里也可以设置为此ws服务器对应的wsdl文件的路径。2)在DOS里,执行wsdltojava.bat。在C盘根目录下就会生成JAVA客户端的代码了3)新建一个java类Invoke,代码如下:package test;public class invoke public static void main(String args) throws Exception getResult();public static void getResult() try SayHelloImplServiceLocator svc = new SayHelloImplServiceLocator();SayHelloService stub = svc.getSayHelloImplPort();/调用 /WsResult wsResult = stub.sayHelloMr(zhouyun);InputClass inputClass=new InputClass();inputClass.setName(zhouyun);WsResult wsResult = stub.sayHelloMiss(inputClass);System.out.println(结果是: + wsResult.getResultVal(); catch (Exception e) System.out.println(e);Ps: 1.通过命令生成的java客户端代码里SayHelloImplServiceLocator类是调用ws的入口。2.执行此类,Myelipse控制台会输出Hello,Miss zhouyun,代表调用成功。3.象JAX、xfire架包生成的客户端代码不能实现代理类输入、输出,只可以实现简单数据类型输入、输出,象String、Map、AaaryList等等。只有axis可以实现代理类的输入、输出。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!