Axis2调用服务端

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;
    }
	
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值