Atitit 动态调用webservice与客户端代理方式调用
Atitit 动态调用webservice与客户端代理方式调用 ? 方式1: 使用call.invoke??直接调用WSDL,缺点:麻烦,不推荐……特别是JAVA调用.NET的WS时,会有不少的问题需要解决。 ? ? 方式2: 生成测试STUB……此种方法更快捷。如果用.NET开发WS客户端,就是用的这种方式…… ? ? 客户端调用web service方法 方法一:使用标准的JAX-WS的API完成客户端调用 //注意。此处http:http://www.itfad.net/queryUser是服务的命名空间,可查看wsdl文件中的targetNamespace QName qName =?new QName("http://www.itfad.net/queryUser","QueryUserImplService"); 方法二:javax.xml.ws.Service String endPointAddress = "http://localhost:8080/queryUser";//服务实际地址 System.out.println(queryService1.query(user)); 这里其实利用wsdl2java工具为我们生成类时已经包含了这种方法。比如我们的服务接口是IQueryUser,那么我们会发现生成的文件下有个IQueryUserService类 ?方法三:使用CXF中JaxWsProxyFactoryBean客户端代理工厂调用web服务 JaxWsProxyFactoryBean soapFactoryBean = newJaxWsProxyFactoryBean(); 方法四:使用CXF的JaxWsDynamicClientFactory动态代理工厂 JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); 1.1.?Axis动态调用Service service = new?Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new?java.net.URL(endpoint)); ? ? QName q = new?QName(namespace,"GetCXInfoByVIN"); call.setOperationName(q);// LSJW26H35BS047598? call.addParameter("vin"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); // ?call.setReturnClass(org.w3c.dom.Element.class); Object obj = call.invoke(new?Object[] { "LSJW26H35BS147598"?});// LSJW26H35BS147598 ? 参考 webservice 开发总结.docx ? 作者::?绰号:老哇的爪子claw?of Eagle?偶像破坏者Iconoclast?image-smasher 捕鸟王"Bird?Catcher?王中之王King of Kings 虔诚者Pious?宗教信仰捍卫者?Defender?of?the?Faith.?卡拉卡拉红斗篷?Caracalla?red cloak 简称::?Emir Attilax?Akbar?埃米尔?阿提拉克斯阿克巴 全名::Emir Akbar?bin Mahmud?bin ?attila bin Solomon?bin adamAl?Rapanui? 埃米尔 阿克巴?本 马哈茂德本?阿提拉 本 所罗门本亚当阿尔?拉帕努伊?? 常用名艾提拉(艾龙),???EMAIL:1466519819@qq.com 头衔:uke总部o2o负责人,全球网格化项目创始人,uke宗教与文化融合事务部部长,Uke部落首席大酋长,uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,奶牛科技cto ,uke波利尼西亚区大区连锁负责人,克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke汤加王国区域负责人。布维岛和南乔治亚和南桑威奇群岛大区连锁负责人 ? 转载请注明来源:attilax的专栏 ??http://blog.csdn.net/attilax --Atiend (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |