java客户端动态调用webservice服务
来源:互联网 发布:java做自动化测试 编辑:程序博客网 时间:2024/05/22 02:22
之前调用webservice服务一直用jdk或者eclipse快速生成客户端代码,这种方式实现起来也比较容易,据说这种方法执行效率也是最好的(动态调用也会动态生成客户端代码)。但是我最近在项目发现这种方式存在一个严重的弊端,那就是当服务端有修改或变动,客户端代码都得重新生成。特别是别人提供的服务端有生产环境和测试环境切换,导致客户端本地代码就得重新生成。所以我就寻思不用生成客户端代码,通过地址动态调用。
动态调用方式如下(其中两种):还有其他好用的方式,欢迎提供,在此谢过
一、CXF提供的方式:
1.依赖的jar:
cxf-2.5.4.jar,
xmlschema-core-2.0.2.jar
neethi-3.0.2.jar,wsdl4j-1.6.2.jar,
commons-logging-1.1.1.jar
2. 代码参考如下:
import javax.xml.namespace.QName;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
public static void sendXmlByCXFWebService(){ //注意:这种方式调用自己的发布的webservice没问题, //但是访问http://ws.webxml.com.cn/上提供服务就报错,暂时没有找到解决方法,如果有哪位知道求指教,不甚感激! //服务地址 String bipEndpoint = "http://127.0.0.1:8888/test?wsdl"; JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); org.apache.cxf.endpoint.Client client = dcf.createClient(bipEndpoint); Object[] objects; String result = ""; try { //命名空间:http://lfieng.com/ ,getName:方法,1829571****:方法的入参 objects = client.invoke(new QName("http://lfieng.com/", "getName"), "1829571****"); result = objects[0].toString();// 远程调用 // 输出调用结果 System.out.println("接口服务返回数据:\n" + result); } catch (Exception e) { e.printStackTrace(); } }
二、axis提供的方式:
1.依赖的jar:
axis.jar,
jaxrpc.jar,
commons-discovery-0.2.jar,
commons-logging-1.1.1.jar,
wsdl4j-1.6.2.jar
2.代码参考如下:
import javax.xml.namespace.QName;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;public static void sendXmlByAxisWebService() throws Exception{//服务地址String requestUrl = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"; String requestXml = "182957****";Object[] object = new Object[] { requestXml };//请求参数Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(requestUrl);// 远程调用路径// 调用的命名空间和方法名call.setOperationName(new QName("http://WebXml.com.cn/", "getMobileCodeInfo"));call.setUseSOAPAction(true); //可以在wsdl中找个这个地址call.setSOAPActionURI("http://WebXml.com.cn/getMobileCodeInfo"); //命名空间和参数名,参数名不可以随便写,参数名可以在wsdl文件中找到call.addParameter(new QName("http://WebXml.com.cn/","mobileCode"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.setReturnType(XMLType.XSD_STRING);// 返回值类型:Stringcall.setTimeout(100000);//超时String result = (String) call.invoke(object);// 远程调用System.out.println(result);}
2 0
- java客户端动态调用webservice服务
- java生成webservice客户端及服务调用
- JAVA动态调用C#WebService客户端
- webservice 客户端动态调用
- 动态调用WebService服务
- 动态调用webservice服务
- java客户端调用webservice
- java调用WebService(客户端)
- java调用WebService(客户端)
- java客户端调用webservice
- java客户端调用webservice
- java客户端调用C#webservice服务相关问题
- 作为客户端调用WebService服务java代码详解。
- java调用webservice服务
- .net动态调用webservice服务
- C#调用WebService服务(动态调用)
- C#调用WebService服务(动态调用)
- C#调用WebService服务(动态调用)
- C语言中char*和char[]用法区别分析&微软编译器的坑
- 通过不同形式获取Bitmap,以及创建Bitmap
- 【数据结构与算法】二叉树递归与非递归遍历
- Scala集合操作
- android自定义popupWindow
- java客户端动态调用webservice服务
- 怎么理解state thread库?
- 机器学习算法笔记
- IP头、TCP头、UDP头详解以及定义
- dropdownlist控件取值用法介绍
- 中文分词与词频统计实例
- poi
- 搭建Nginx+Java环境
- ListView 有关的优化