当前位置:首页 > 资格考试 > 正文

!!!紧急:关于axis2访问webservice服务的问题

axis2调用webservice问题

importjavax.xml.namespace.QName;
importorg.apache.axiom.om.OMAbstractFactory;
importorg.apache.axiom.om.OMElement;
importorg.apache.axiom.om.OMFactory;
importorg.apache.axiom.om.OMNamespace;
importorg.apache.axis2.AxisFault;
importorg.apache.axis2.addressing.EndpointReference;
importorg.apache.axis2.client.Options;
importorg.apache.axis2.client.ServiceClient;
importorg.apache.axis2.rpc.client.RPCServiceClient;
publicclasstest{
publicstaticvoidmain(String[]args)throwsException{
//使用RPC方式调用WebService
RPCServiceClientser=newRPCServiceClient();
Optionsoptions=ser.getOptions();
//指定调用WebService的URL
EndpointReferencetargetEPR=newEndpointReference(
"http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL");
options.setTo(targetEPR);
options.setAction("http://WebXml.com.cn/getMobileCodeInfo");
//指定getMobileCodeInfo方法的参数值
Object[]opAddEntryArgs=newObject[]{"15818843224","15848888"};
//指定getMobileCodeInfo方法返回值的数据类型的Class对象
Class[]classes=newClass[]{String.class,String.class};
//指定要调用的getMobileCodeInfo方法及WSDL文件的命名空间
QNameopAddEntry=newQName("http://WebXml.com.cn/","getMobileCodeInfo");
//调用getMobileCodeInfo方法并输出该方法的返回值
Object[]str=ser.invokeBlocking(opAddEntry,opAddEntryArgs,classes);
// System.out.println(ser.invokeBlocking(opAddEntry,opAddEntryArgs));


try{
ServiceClientsc=newServiceClient();
Optionsopts=newOptions();
//确定目标服务地址
opts.setTo(newEndpointReference(
"http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL"));
//确定调用方法
opts.setAction("http://WebXml.com.cn/getMobileCodeInfo");
sc.setOptions(opts);
//发送请求并并得到返回结果,注意参数生成方法的分析
OMElementres=sc.sendReceive(createPayLoad());
//值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。
//我们可以对之灵活应用,下面我取第一个元素值,并打印之。因为调用的方法返回一个结果
res.getFirstElement().getText();
System.out.println(res.getFirstElement().getText());
}catch(AxisFaulte){
e.printStackTrace();
}


}
publicstaticOMElementcreatePayLoad(){
OMFactoryfac=OMAbstractFactory.getOMFactory();
//指定命名空间
OMNamespaceomNs=fac.createOMNamespace("http://WebXml.com.cn/","nsl");
//指定方法
OMElementmethod=fac.createOMElement("getMobileCodeInfo",omNs);
//指定方法的参数
OMElementvalue=fac.createOMElement("mobileCode",omNs);
value.setText("15818843224");
method.addChild(value);
OMElementvalue1=fac.createOMElement("userID",omNs);
value1.setText("");
method.addChild(value1);
//返回方法(实际上就是OMElement封装的xml字符串)
returnmethod;
}
}

我不知道怎么使用rpc这种方法能够拼凑出如下的内容:

<?xmlversion="1.0"encoding="utf-8"?>
" target="_blank">http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

" target="_blank">http://WebXml.com.cn/">
string
string


你的代码只能够产生如下的内容:

不知道是不是.net的webservice是不是一定要

string
string

形式的,但是使用rpc方式,我是不知道怎么办到的,所以我只能采用document方式调用,生成如下的内容:

现在总算是可以了:

15818843224:广东 广州 广东移动全球通卡

如何解决java axis 调用webservice服务器操作异常

安装Eclipse-jee,下载Axis2的最新版本Axis2 1.4.1 Release,其内部结构为 开发前配置:在Eclipse的菜单栏中,Window --> Preferences --> Web Service --> Axis2 Perferences,在Axis2 runtime location中选择Axis2解压缩包的位置,设置好后,点"OK"即行。 新建一个Java Project,命名为"WS_01",在"WS_01"项目上new --> other,找到"Web Services"下面的"Web Service"; 在出现的Web Services对象框,在Servi

java 中怎样用axis2调用webservice服务

ServiceClientsender=newServiceClient();
Optionsoption=newOptions();
option.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
option.setAction("http://WebXml.com.cn/getWeatherbyCityName");
EndpointReferenceepfs=newEndpointReference(address);
option.setTransportInProtocol(Constants.TRANSPORT_HTTP);
option.setTo(epfs);
sender.setOptions(option);

OMFactoryfac=OMAbstractFactory.getOMFactory();
OMNamespaceomNs=fac.createOMNamespace("http://WebXml.com.cn/","");
OMElementdata=fac.createOMElement("getWeatherbyCityName",omNs);
OMElementinner=fac.createOMElement("theCityName",omNs);
inner.setText("长沙");
data.addChild(inner);
OMElementresult=sender.sendReceive(data);
System.out.println(result);

一个基于axis2开发的webService服务的问题

你用的没错 axis2有很多中应用的方式,他可以自己启动一个服务独立运行,也可以作为一个应用程序部署到应用服务器中。 还可以在自己的项目中内建axis2的功能,就是在你的项目里面加上axis2的相关的包,在Web.xml配置axis2相关的Servlet,这样axis2就可以和原有的项目融为一体了。所以看不到axis.war的东西。 实际项目中这几种方式都有用到。 另外开发WebService除了AXIS2还有别的框架。

在eclipse中用axis2生成webservice时遇到的问题

我也遇到这样的问题,可以试一下下面的方法,我是这么解决的: 1、File->Switch WorkSpace->(new workspace) 2、Window->Preferences->Web Services->Axis2 Preferences->Axis2 runtime location 3、新建一个项目,勾选上Axis2 4、将新的Workspace路径下的\.metadata\.plugins\org.apache.axis2.facet\下复制到之前的Workspace,再将eclipse切换到原来的Workspace就可以了 5、删掉新建的Workspace
展开全文阅读