如何通过wsdl生成接口接口jar
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过wsdl生成接口接口jar相关的知识,希望对你有一定的参考价值。
参考技术A 通常与web服务的通讯方式为:以POST方式建立与服务端URL的HTTP连接,然后发送指定的XML串。服务端也会以XML方式返回响应。
XML串类似:
<soapenv:Envelope>
<soapenv:Body>
<request>…</request>
</soapenv:Body>
</soapenv:Envelope>
其中,WSDL中描述了上述通讯协议中大部分内容:
网络协议由wsdl中的binding描述,通常为http.
URL由wsdl中的service/port/address指定。
XML的Body之内的格式由wsdl的message与types指定。
理论上这些可以通过程序来完成,而不需要stub类。
但是由于很多web服务的输入输出格式很复杂,靠程序来实现难度很大。
我认为你的多个wsdl应该输入输出格式一致的,仅仅是URL的不同而已(不然程序也没法知道朝哪儿赋值)。因此,你可以仅利用一套固定的stub,只需在调用时区分不同的URL即可(axis里可用setEndpoint,cxf似乎是在初始化service对象时指定的)。
另外,团IDC网上有许多产品团购,便宜有口碑
使用axis调用wsdl接口
1、需要用到的jar包如下:
axis.jar、axis-ant.jar、commons-discovery-0.2.jar、commons-logging-1.0.4.jar、jaxrpc.jar、log4j-1.2.8.jar、saaj.jar、wsdl4j-1.5.1.jar
2、调用代码举例如下
/** * 查询用户手机信息 * 这个接口是网上免费提供的接口,需要电脑联网才能访问 */ public static void getMobileCodeInfo(){ String endpoint = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"; String nameSpace = "http://WebXml.com.cn/"; String method = "getMobileCodeInfo"; try { //新建服务 Service service = new Service(); //生成客户端 Call call = (Call) service.createCall(); //配置endpoint call.setTargetEndpointAddress(new URL(endpoint)); //配置命名空间和方法 call.setOperationName(new QName(nameSpace,method)); //配置参数名和参数值 call.addParameter(new QName(nameSpace,"mobileCode"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(nameSpace,"userID"), XMLType.XSD_STRING, ParameterMode.IN); Object[] paramValues = new Object[]{"18705187159",""}; //设置返回值类型 call.setReturnType(XMLType.XSD_STRING); //SoapAction的配置,在浏览器url中输入wsdl,在结果中搜索soapAction,如果有值,则需要设置,如果没有值,则设不设都行 call.setUseSOAPAction(true); call.setSOAPActionURI(nameSpace+method); //调用接口 String result = (String) call.invoke(paramValues); System.out.println("result->"+result); //result->18705187159:江苏 南京 江苏移动全球通卡 } catch (Exception e) { System.out.println("接口getMobileCodeInfo调用失败!异常信息如下:"); System.out.println(e.toString()); } }
/** * 查询实体类集合json * 这个接口是我自己在另一个eclipse中构造的接口,需要另一个项目中接口程序启动才能访问 */ public static void listBeanTest(){ String endpoint = "http://localhost:8080/test2?wsdl"; String nameSpace = "http://webservice.ws.glaway.com/"; String method = "listBeanTest"; try { //新建服务 Service service = new Service(); //生成客户端 Call call = (Call) service.createCall(); //配置endpoint call.setTargetEndpointAddress(new URL(endpoint)); //配置命名空间和方法 call.setOperationName(new QName(nameSpace,method)); //配置参数名和参数值 Object[] paramValues = new Object[0]; //设置返回值类型 call.setReturnType(XMLType.XSD_STRING); //SoapAction的配置,在浏览器url中输入wsdl,在结果中搜索soapAction,如果有值,则需要设置,如果没有值,则设不设都行 // call.setUseSOAPAction(true); // call.setSOAPActionURI(nameSpace+method); //调用接口 String result = (String) call.invoke(paramValues); System.out.println("result->"+result); //result->{"code":"success","data":[{"age":25,"name":"1"},{"age":8,"name":"2"}]} } catch (Exception e) { System.out.println("接口listBeanTest调用失败!异常信息如下:"); System.out.println(e.toString()); } }
以上是关于如何通过wsdl生成接口接口jar的主要内容,如果未能解决你的问题,请参考以下文章