关于axis2的RPCServiceClient客户端无法传参问题的解决方案
来源:互联网 发布:老炮网络剧找不到了 编辑:程序博客网 时间:2024/05/22 16:45
本内容链接上一篇博客。关于如何访问webservice的问题
axis2方式的rpcserviceclient客户端方式调用webservice一般方式如下:
import java.io.IOException;
import javax.xml.namespace.QName;
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.apache.axis2.rpc.client.RPCServiceClient;
RPCServiceClient client = new RPCServiceClient();Options options = client.getOptions();String address = "http://webservice.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx";EndpointReference epf = new EndpointReference(address);options.setAction("http://WebXml.com.cn/getAreaString");options.setTo(epf);client.setOptions(options);QName qname = new QName("http://WebXml.com.cn/", "getAreaString");Object[] result = client.invokeBlocking(qname, new Object[] { -4 },new Class[] { Object.class });// System.out.println(result[0]);
但是这种方式调用电视台节目,存在无法传参问题。别的webservice接口没有测试过,这里不敢下决定性的结论。但至少是访问电视台接口是不行的。搜索了下资料,发现以下方式可以传参。代码如下:
这种方式是采用serviceclient方式调用的。
// axis2方式private static void axis2WebService() {try {String soapBindingAddress = "http://webservice.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl";ServiceClient sender = new ServiceClient();EndpointReference endpointReference = new EndpointReference(soapBindingAddress);Options options = new Options();options.setAction("http://WebXml.com.cn/getTVstationDataSet");options.setTo(endpointReference);sender.setOptions(options);OMFactory fac = OMAbstractFactory.getOMFactory();// 这个和qname差不多,设置命名空间OMNamespace omNs = fac.createOMNamespace("http://WebXml.com.cn/","getTVstationDataSet");OMElement data = fac.createOMElement("getTVstationDataSet", omNs);// 对应参数的节点String[] strs = new String[] { "theAreaID" };// 参数值String[] val = new String[] { "-4" };for (int i = 0; i < strs.length; i++) {OMElement inner = fac.createOMElement(strs[i], omNs);inner.setText(val[i]);data.addChild(inner);}// 发送数据,返回结果OMElement result = sender.sendReceive(data);System.out.println(result.toString());} catch (AxisFault ex) {ex.printStackTrace();}}
所需包如如下:
activation-1.1.jar
antlr-2.7.7.jar
axiom-api-1.2.10.jar
axiom-dom-1.2.10.jar
axiom-impl-1.2.10.jar
axis2-adb-1.5.4.jar
axis2-adb-codegen-1.5.4.jar
axis2-ant-plugin-1.5.4.jar
axis2-clustering-1.5.4.jar
axis2-codegen-1.5.4.jar
axis2-corba-1.5.4.jar
axis2-fastinfoset-1.5.4.jar
axis2-java2wsdl-1.5.4.jar
axis2-jaxbri-1.5.4.jar
axis2-jaxws-1.5.4.jar
axis2-jibx-1.5.4.jar
axis2-json-1.5.4.jar
axis2-kernel-1.5.4.jar
axis2-metadata-1.5.4.jar
axis2-mtompolicy-1.5.4.jar
axis2-saaj-1.5.4.jar
axis2-soapmonitor-servlet-1.5.4.jar
axis2-spring-1.5.4.jar
axis2-transport-http-1.5.4.jar
axis2-transport-local-1.5.4.jar
axis2-xmlbeans-1.5.4.jar
bcel-5.1.jar
commons-codec-1.3.jar
commons-fileupload-1.2.jar
commons-httpclient-3.1.jar
commons-io-1.4.jar
commons-logging-1.1.1.jar
geronimo-annotation_1.0_spec-1.1.jar
geronimo-jaxws_2.1_spec-1.0.jar
geronimo-jta_1.1_spec-1.1.jar
geronimo-saaj_1.3_spec-1.0.1.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
httpcore-4.0.jar
jalopy-1.5rc3.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.7.jar
jaxb-xjc-2.1.7.jar
jaxen-1.1.1.jar
jettison-1.0-RC2.jar
jibx-bind-1.2.1.jar
jibx-run-1.2.1.jar
juli-6.0.16.jar
log4j-1.2.15.jar
mail-1.4.jar
mex-1.5.4-impl.jar
neethi-2.0.4.jar
regexp-1.2.jar
tribes-6.0.16.jar
woden-api-1.0M8.jar
woden-impl-dom-1.0M8.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.9.jar
xalan-2.7.0.jar
xercesImpl-2.8.1.jar
xml-resolver-1.2.jar
xmlbeans-2.3.0.jar
XmlSchema-1.4.3.jar
下载axis2的包就行,没有挑除不需要的。
具体原因没有仔细研究,可能问题是命名空间无法访问造成的吧。
- 关于axis2的RPCServiceClient客户端无法传参问题的解决方案
- Axis2 Webservice new RPCServiceClient()错误的问题
- 关于Exchange 无法备份问题的解决方案
- 关于Ubuntu无线网络无法问题的解决方案
- 关于axis2.1.6与websphere7的包冲突问题的解决方案
- Axis2调用webservice Client--RPCServiceClient
- RPCServiceClient-调用webservice客户端
- 关于oracle使用客户端无法卸载的问题
- 关于Kinect突然无法启动问题的解决方案
- Axis2 生成 ADB Bean 客户端碰到的问题
- Axis2 客户端的开发步骤
- Axis2客户端的最少依赖
- 关于客户端与服务端时区不同导致客户端上的时间不准问题的解决方案
- axis2解决eclpise下无法安装的问题
- 关于K3中间层注册后,服务器注销或锁定状态,客户端无法使用的解决方案
- Axis2的OMElement问题
- 关于cocos2dx客户端程序的自动更新解决方案
- 关于cocos2dx客户端程序的自动更新解决方案
- 维护代码库的五个精华实践
- Linux运维常用命令
- iOS 委托模式
- 深入解读Linux与Android的相互关系
- zbar 解决中文乱码问题
- 关于axis2的RPCServiceClient客户端无法传参问题的解决方案
- 当我们谈到梦想
- Mysql乱码
- MyEclipse优化配置
- OpenMP
- 已越狱的IOS设备再升级教程
- 二叉树的最大深度和宽度
- 标准C函数 system 在windows 和 linux 下的作用
- vim(一): 小技巧