- 浏览: 565035 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
a1641693970:
还不错,学习了
BeanUtils使用总结(二)LazyDynaBean -
zjfshowtime:
很好的办法,学习了。
ORA-28001: the password has expired -
ya654277yo:
哦,多谢分享
Apache整合Tomcat后get方式提交中文乱码问题解决 -
foolkeeper:
nice !!
jvm内存参数设定 -
tracy821:
谢谢了,找了好久才找到
关于Spring 声明式事务处理时,throws exception不回滚的问题
1、defined input、output
import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; Service service = new Service();//创建service对象 Call call; try { call = (Call) service.createCall();//得到Call对象 try { call.setTargetEndpointAddress(new java.net.URL(Constants.sns_sms_service));//将要访问的接口地址,将接口地址加上?wsdl在浏览器中访问就可以查看到wsdl文件的信息,以及你所需要的参数名称等。 } catch (MalformedURLException e) { e.printStackTrace(); } call.setOperationName("sendSms");//WSDL里面描述的接口名称 call.getMessageContext().setUsername(Constants.sns_httpbase_username);//http认证用户名 call.getMessageContext().setPassword(Constants.sns_httpbase_password);//http认证密码 call.addParameter("sendnum", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//接口的参数 sendnum 为String类型。addParameter()第一个参数是参数的名称与wsdl中相对应必须相同。第二个参数是参数的类型 。也必须与wsdl相同。 call.addParameter("acceptnums", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//接口的参数 call.addParameter("smscnt", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//接口的参数 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型 简单类型的返回就可以这样简单操作,只要设置返回类型即可。甚至可以不设置返回类型。不设置返回类型操作方法请看2 Object xml; try { xml = (Object)call.invoke(new Object[]{send,reving,content});//参数的顺序与addParameter的顺序相同,且设置了addParmaters就必须setRuturnType返回值 //给方法传递参数,并且调用方法 System.out.println("result is "+xml); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); }
2、no defined input\output
Service和Call的创建都与1相同。
call = (Call) service.createCall();
call.setOperationName(new QName(url, "getIByusername"));//getByusername是服务端接口的方法名称url是接口地址
call.setTargetEndpointAddress(new java.net.URL(url));//接口地址
Object o = call.invoke(new Object[] { account ,IP, mcode });//这里直接传入参数,但是需要注意的是,传入的参数顺序必须与wsdl顺序相同,且类型相同。可以接收一个map的对象。
3、obj->input/output
try{ String url = Constants.sns_login_service; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(new QName(url, "Login"));//Login为要调用的方法名 // hoope.views.api.login_service.LoginService为 wsdl中 targetNamespace 的值 以下相同 call.addParameter(new QName("hoope.views.api.login_service.LoginService", "username"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的username为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.login_service.LoginService", "pwd"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的units为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.login_service.LoginService", "code"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的code为传入参数的变量名字 call.setReturnType(new QName("hoope.views.api.login_service.LoginService", "response"), ITVAccount.class);//ITVAccount这里是重点,返回时主要在这配置,ITVAccount为返回的对象 // 注册映射关系 QName XljgInfo = new QName("hoope.views.api.login_service.LoginService", "LoginInfoDict");//此处的 LoginInfoDict为WSDL文件中complexType name的属性值 //这里注册映射关系,对自定义的类进行序列化与反序列化。 call.registerTypeMapping(ITVAccount.class, XljgInfo, new BeanSerializerFactory(ITVAccount.class, XljgInfo), new BeanDeserializerFactory(ITVAccount.class, XljgInfo));//ITVAccount.class同上, ITVAccount itv =(ITVAccount) call.invoke(new Object[] {account,pwd,code});//接口接收的参数 if(itv!=null){ itv.setNickName(itv.getNickname()); itv.setUserName(itv.getUsername()); itv.setMobilePhone(itv.getUserphone()); } System.out.println("xljg="+itv);//打印输出对象 } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); }
4、obj[]->input/output
try{ String url = Constants.sns_login_service; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(new QName(url, "Login"));//Login为要调用的方法名 // hoope.views.api.login_service.LoginService为 wsdl中 targetNamespace 的值 以下相同 call.addParameter(new QName("hoope.views.api.login_service.LoginService", "username"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的username为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.login_service.LoginService", "pwd"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的units为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.login_service.LoginService", "code"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的code为传入参数的变量名字 call.setReturnType(new QName("hoope.views.api.login_service.LoginService", "response"), ITVAccount[].class);//ITVAccount这里是重点,返回时主要在这配置,ITVAccount为返回数组对象 // 注册映射关系 QName XljgInfo = new QName("hoope.views.api.login_service.LoginService", "LoginInfoDict");//此处的 LoginInfoDict为WSDL文件中complexType name的属性值 //这里注册映射关系,对自定义的类进行序列化与反序列化。 call.registerTypeMapping(ITVAccount[].class, XljgInfo, new BeanSerializerFactory(ITVAccount[].class, XljgInfo), new BeanDeserializerFactory(ITVAccount[].class, XljgInfo));//ITVAccount.class同上, ITVAccount[] itv =(ITVAccount[]) call.invoke(new Object[] {account,pwd,code});//接口接收的参数 System.out.println("xljg="+itv);//打印输出数组 } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); }
5、返回值为对象中包含对象及对象中包含数组
try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(new QName(url, "seachRelateUserInfo"));//seachRelateUserInfo为要调用的方法名 call.getMessageContext().setUsername("admin");//httpbase认证用户名 call.getMessageContext().setPassword("admin");//httpbase认证密码 //hoope.views.api.userinfo_service.UserInfoWebService 为 wsdl中 targetNamespace 的值 以下相同 call.addParameter(new QName("hoope.views.api.userinfo_service.UserInfoWebService", "condition"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的condition为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.userinfo_service.UserInfoWebService", "type"),XMLType.SOAP_INT,ParameterMode.IN);//这里的type为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.userinfo_service.UserInfoWebService", "start"),XMLType.SOAP_INT,ParameterMode.IN);//这里的start为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.userinfo_service.UserInfoWebService", "pagesize"),XMLType.SOAP_INT,ParameterMode.IN);//这里的pagesize为传入参数的变量名字 call.addParameter(new QName("hoope.views.api.userinfo_service.UserInfoWebService", "checkcode"),XMLType.SOAP_STRING,ParameterMode.IN);//这里的checkcode为传入参数的变量名字 call.setReturnType(new QName("hoope.views.api.userinfo_service.UserInfoWebService", "response"), MapInfoDict.class);//这里设置返回值的类型 // 注册映射关系 //此处的MapInfoDict userInfoDictArray userInfoDict为WSDL文件中complexType name的属性值 首先找到返回对象的complexType再看它中是否有其他的对象类型自定义对象类型,然后依次映射。 //这里返回对象的complexType为MapInfoDict,MapInfoDict中有一个userInfoDictArray的对象,userInfoDictArray的对象中有一个List<UserInfoDict>的集合。 //问题就在这里,这个集合获取不到。 QName XljgInfo = new QName("hoope.views.api.userinfo_service.UserInfoWebService", "MapInfoDict"); QName XljgInfo2 = new QName("hoope.views.api.userinfo_service.UserInfoWebService", "userInfoDictArray"); QName XljgInfo3 = new QName("hoope.views.api.userinfo_service.UserInfoWebService", "userInfoDict"); //为自定义类型进行序列化和反序列化。必须与上面定义的QName匹配。它与服务端返回的类型做映射匹配。 call.registerTypeMapping(MapInfoDict.class, XljgInfo, new BeanSerializerFactory(MapInfoDict.class, XljgInfo), new BeanDeserializerFactory(MapInfoDict.class, XljgInfo)); call.registerTypeMapping(UserInfoDictArray.class, XljgInfo2, new BeanSerializerFactory(UserInfoDictArray.class, XljgInfo2), new BeanDeserializerFactory(UserInfoDictArray.class, XljgInfo2)); //对UserInfoDictArray中存在的是对象,则直接对对象进行序列化与反序列话即可。但如果UserInfoDictArray中的是List该如何去映射呢?该如何序列化呢?还没找到实现方法。待解决中。。。望高人指点。 call.registerTypeMapping(UserInfoDict.class, XljgInfo3, new BeanSerializerFactory(UserInfoDict.class, XljgInfo3), new BeanDeserializerFactory(UserInfoDict.class, XljgInfo3));[/color] MapInfoDict xljg = (MapInfoDict) call.invoke(new Object[] {parm,"1","1","20","itv"});//执行调用服务接口 System.out.println("xljg="+xljg);//打印输出 } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); }
发表评论
-
ProtoStuff&&XStream性能相差30%
2013-07-26 16:20 1811package foo; import java.u ... -
xfire设置连接超时问题
2012-08-01 17:25 5093近期使用xfire作为客户端访问WS,结果因为目标主机假死 ... -
JAXB映射HashMap
2011-09-19 14:35 3389JAXB是很强大的XML <—> Java Cla ... -
XML<->bean (JXAB)
2011-08-20 00:34 1421详细内容请参考这里(这是一个更复杂一点的例子,HashMap类 ... -
JAVA 调用Web Service的方法
2011-08-15 10:28 11121.使用HttpClient 用到的jar文件:comm ... -
axis2调用带Authentication认证的webservice
2011-07-22 12:22 1798package com.wujianjun.axis2.cli ... -
xfire获取客户端IP地址
2011-06-09 13:12 1869在xfire开发的webservice中我们可以从XFireS ... -
HttpClient学习整理
2011-05-20 16:20 2585HttpClient 学习整理 HTTP ... -
(转)XFire完整入门教程
2011-04-02 15:42 2286Interface 1 package test ... -
Xfire客户端调用
2011-03-30 20:57 9339使用XFire开发Web Service客户端分为如下两大类: ... -
Xstream 自定义converter
2011-03-29 16:29 36141、创建一个Person转换器:下面我们来创建一个简单的转换器 ... -
使用 XStream实现JavaBean 与 XML/JSON 之间相互换
2011-03-16 17:44 1239摘要: XML和JSON是当今常用的两种数据描述与传 ...
相关推荐
axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端
Axis客户端调用代码,使用WSDL2JAVA生成的客户端,可以直接进行调用
java axis客户端调用webservice,可应用于ofbiz框架。 解决网络上共享代码两次调用后会出现timeout的BUG
axis客户端调用WebService需要的最少包。包含axis.jar commons-discovery-0.2.jar commons-logging.jar jaxrpc.jar mail.jar saaj.jar wsdl4j.jar
NULL 博文链接:https://huttoncs.iteye.com/blog/2091706
java调用webservice axis 客户端 服务器端 包含jar包
非常好用的webservice for axis客户端详尽代码! 可以用以快速入门webservice的学习。
NULL 博文链接:https://shenxueliang.iteye.com/blog/1734414
WebService Axis客户端调用接口需要用到的jar包
cxf客户端调用axis服务端流程
axis编写客户端所需的部分jar包。
axis2客户端需要的jar包总结,包含axis2客户端搭建需要的全部jar包。
之前webservice客户端调用,使用RPC客戶端接口调用方法,但发现此种调用方式针对携参方式并不适用。最后经过多种方式测试选择了OMFactory......调用。经测试好用
基于axis2实现的webservice简单实现(客户端+服务端)。
方便,免费,只是为了给自己用,为什么用这么多的字啊 好了 我要吃饭去了
axis客户端生成set Axis_Lib=E:\DONGLING\document\JAR_LIB\axis-1_4\lib
用xfire技术来实现服务端的开发,用axis1的技术来实现客户段的调用。一个完整的实例,包含所需要的全部jar包,下载后可以直接运行,简单 方便 通用
axis根据服务端wsdl生成客户端工具。
axis2客户端调用webService接口需要用的jar包,在一次调接口中遇到的问题,亲测可用(整理成了比较精简的jar包)
axis2客户端,调用带ntlm认证的web service的代码例子和所需jar和java