java调用wsdl(jdk自带、axis2)
2017-02-20 16:19
281 查看
Java通过WSDL文件来调用web service的方法介绍。一、通过axis2远程调用web service(通过反射进行调用执行,效率应该比第二种低些:个人认为)注:该方法要求要能大概读懂XML格式的WSDL文件
2、通过右击项目-new-other-web Services,如下图
3输入wsdl地址
4、点击完成后自动生成服务端代码:
5、调用
package webService.client.axis; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; /*** * webservice客户端:利用axis2 * * @author SunJun * */ public class TestAxisClient { /*** * 传统阻塞式客户端(新版本) * * @return */ public String invokeRemoteFuc_New() { EndpointReference targetEPR = new EndpointReference( "http://localhost:8078/testWebService.asmx?wsdl");// 接口地址 Options options = new Options(); // 下面的一行代码可要可不要(自己测试的结果) // options.setAction("urn:BeiJingChaoYang");//调用接口方法 options.setTo(targetEPR); ServiceClient sender = null; try { sender = new ServiceClient(); sender.setOptions(options); OMFactory fac = OMAbstractFactory.getOMFactory(); // 设置命名空间,这里的命名空间是和wsdl中的命名空间一样的(从wsdl中获取) OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", ""); // 设置方法名称,这个方法名称(BeiJingChaoYang)和服务里面的方法一致(是需要调用的方法名称) OMElement method = fac.createOMElement("BeiJingChaoYang", omNs); // 设置入参名称,这个参数名称(dataXml)是和服务提供的方法里面的参数名称一致 // (例如:要和方法BeiJingChaoYang中dataXml参数名称一致),否则服务方法获取不到该参数值 OMElement name = fac.createOMElement("dataXml", omNs); // 设置入参值 name.setText("1111"); method.addChild(name); OMElement name2 = fac.createOMElement("testParam", omNs); // 设置入参值 name2.setText("222"); method.addChild(name2); method.build(); System.out.println("method:" + method.toString());// print:<getUserById // xmlns="http://service.hsinghsu.com"><id>1</id></getUserById> OMElement response = sender.sendReceive(method); //获取处理结果 System.out.println("response:" + response); OMElement elementReturn = response.getFirstElement(); System.out.println("cityCode:" + elementReturn.getText()); analysisResult(elementReturn.getText()); } catch (AxisFault e) { System.out.println("Error"); e.printStackTrace(); } return null; } public String analysisResult(String data) { String dataXml = data; Document doc = null; try { doc = DocumentHelper.parseText(dataXml); // 将字符串转为XML Element rootElt = doc.getRootElement(); // 获取根节点 Element status = rootElt.element("Status"); String status_value = status.getText(); if (status_value.equals("1")) {// 失败 Element error = rootElt.element("Error"); String error_value = error.getText(); Attribute error_id = error.attribute("id"); String error_id_value = error_id.getValue(); Attribute error_code = error.attribute("code"); String error_code_value = error_code.getValue(); Attribute error_name = error.attribute("name"); String error_name_value = error_name.getValue(); } } catch (Exception e) { e.printStackTrace(); } return null; } }二、使用wsdl2java把WSDL文件转成本地类,然后像本地类一样使用,即可。1、首先创建调用ws的web项目,就一个普通的web项目就行;
相关文章推荐
- Axis2学习总结(2)-----通过wsdl2java工具调用第三方服务
- java调用wsdl2java(axis2)存根用户认证
- Java使用axis2调用wsdl形式的webservice
- 关于手动给ie加java plugin ,并且使用JBUILDER9下面自带的JDK
- JAVA客户端调用WSDL的一点总结
- AXIS2之WSDL2JAVA
- java使用AXIS2调用asp.net的WebService
- 使用JDK自带的命令wsimport 来解析wsdl文档
- Java调用以WSDL形式发布的web service
- Axis2 + Tomcat5 + Java Eclipse + JDK 5 配置方法
- Eclipse使用axis2生成客户端调用时最后一步出现an error occurred while completing process -java.lang.reflect.InvocationTargetException
- java webservice开发和调用(jdk1.5+eclipse3.4 + tomcat5.5+axis1.4+xfire1.2.6)
- Axis2 中的工具wsdl2Java 的使用点滴
- axis2使用WSDL2Java把WSDL生成JAVA类的具体代码
- 用Eclipse调用AIX的wsdl2java
- Java如何通过WSDL文件来调用这些web service
- 通过jdk自带的jconsole.exe监控java程序的性能
- rhel5 linux 配置jdk,卸载自带java
- AXIS2实例5:wsdl2java语法
- java使用AXIS2调用asp.net的WebService