java如何通过eclipse安装axis2来调用webservice 20
2016-02-03 · 百度知道合伙人官方认证企业
通过eclipse安装axis2来调用webservice的方法:
1、 在eclipse的菜单栏中选择 window-->preferences-->web service -->axis2 preferences 在axis2 runtime 下的 axis2 runtime location中指定解压目录
2、右击oprationServiceImpl--->webservice --->create webservice 如下:
3、在service implemention中出现需要部署的服务类 将服务器的运行状态设置为start service 并且设置 service runtime (web服务器) web service runtime (axis的版本)
对应的web项目。勾选publish the web service 和monitor the service ---> next --->next直到:
点击 start server 启动刚刚部署的web项目 --->next 直到 finish 此时部署就已经完成了。
4、在axis-test中编写客户端代码并调用服务器程序
package com.hualom.axis.client;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class OprationClient {
/**
* @param args
* @throws AxisFault
*/
public static void main(String[] args) throws AxisFault {
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2-testServer/services/OprationServiceImpl");
options.setTo(targetEPR);
// 指定要调用的计算机器中的方法及WSDL文件的命名空间:impl.service.axis.hualom.com 服务类的包名称。
QName searchResult = new QName("http://impl.service.axis.hualom.com","search");
QName noSearchResult = new QName("http://impl.service.axis.hualom.com","noSearch");
// 设置发送到服务器的内容
Object[] opAddEntryArgs = new Object[] { "你好 server"};
// 指定返回值的类型
Class[] classes = new Class[] { String.class };
// 调用服务器开放的接口并且返回结果 如果没有返回值可以直接调用 serviceClient.invokeRobust(opName, opAddEntryArgs)
System.out.println(serviceClient.invokeBlocking(searchResult,opAddEntryArgs, classes)[0]);
}
}
调用这个webservice不需要安装axis2,但是可以在你的工程里引入Axis2的包来编写一个RPC客户端程序。
import javax.xml.namespace.QName;import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
按照RPC的方式(可以搜搜,网上很多)写一个调用函数就ok了,比如:
public Object invokeWebservice() throws AxisFault {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://www.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL");
options.setTo(targetEPR);
options.setTimeOutInMilliSeconds(TIME_OUT);
QName opAddEntry;
Object[] opAddEntryArgs = null;
Class<?>[] classes = new Class<?>[] { String.class };
opAddEntry = new QName("", "");
return serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0];
}
我也这么试过,总是报错。你好人做到底,把方法参数都补齐了告诉我一下呗!
调用天气查询需要用户ID,我这边网络限制不能注册。