1.导入需要的jar包
package com.axis2.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;
import com.chni.btmachine.bean.KioskUserInfo;
/**
* 使用Axis2调用webservice服务
* @author Administrator
*
*/
public class TestAxis2Client {
public void qeury(){
//使用RPC调用webservice
RPCServiceClient rpcClient=null;
try {
//创建客户端对象
rpcClient = new RPCServiceClient();
//创建options对象
Options options= rpcClient.getOptions();
//指定webservices调用的url地址
EndpointReference endp=new EndpointReference("http://xxx:8443/HealthCloud/services/downloadWebService");
//设置to
options.setTo(endp);
//指定调用的WSDL命名空间(<wsdl:definitions targetNamespace="http://webservice.kiosk.tsinghua.edu">)
//和 调用方法名称
QName qname=new QName("http://webservice.kiosk.tsinghua.edu", "getUser");
//指定返回值数据类型
Class[] cs=new Class[]{KioskUserInfo[].class};
//指定方法的参数 (使用数组形式,多个参数写在后面即可)
Object obj[]=new Object[]{"1","2010-12-1"};
//调用服务器端方法 第一个参数表示调用的方法,第二个参数表示传递过去的参数,第三个参数表示返回的类型
//方法返回一个Object数组 取第一个即可
KioskUserInfo[] kios=(KioskUserInfo[])rpcClient.invokeBlocking(qname, obj,cs)[0];
// 必须释放资源否则出错
serviceClient.cleanupTransport();
System.out.println(kios);
for(KioskUserInfo k:kios){
System.out.println(k.getAddress());
}
} catch (AxisFault e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws AxisFault{
TestAxis2Client client=new TestAxis2Client();
client.qeury();
}
}
package com.axis2.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;
import org.apache.axis2.transport.http.HTTPConstants;
import com.chni.btmachine.bean.KioskUserInfo;
public class AxisTest {
public static void main(String[] args) {
//
Object obj[]={"1", "2010-02-01"};
String serviceEpr="http://location:8088/HealthCloud/services/downloadWebService";
KioskUserInfo str[]=AxisTest.callWebService(serviceEpr, "http://webservice.kiosk.tsinghua.edu", obj, "getUser");
System.out.println(str.length);
}
public static KioskUserInfo[] callWebService(String serviceEpr, String nameSpace, Object[] args, String methodName){
try{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(serviceEpr);
options.setTo(targetEPR);
//===========可以解决多次调用webservice后的连接超时异常========
options.setManageSession(true);
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,true);
//设置超时
options.setTimeOutInMilliSeconds(60000L);
// 设定操作的名称
QName opQName = new QName(nameSpace, methodName);
// 设定返回值
// 操作需要传入的参数已经在参数中给定,这里直接传入方法中调用
Class[] opReturnType = new Class[] { KioskUserInfo[].class };
//请求并得到返回值
Object[] response = serviceClient.invokeBlocking(opQName, args, opReturnType);
KioskUserInfo sResult[] = ((KioskUserInfo[]) response[0]);
//==========可以解决多次调用webservice后的连接超时异常=======
serviceClient.cleanupTransport();
return sResult;
}catch(AxisFault af){
af.printStackTrace();
}
return null;
}
}