Android使用ksoap2连接webserver(JAX-WS)访问数据库

首先下载jar包:ksoap2-android-assembly-2.4-jar-with-dependencies.jar

 

为了重复使用访问webservice的方法,把该方法写成一个工具类。

其中NetworkState.isConnected方法用于检查网络是否连接。

调用方法:String s = RequestWebService.request("webservice方法名",参数字符串数组);s即为webservice返回结果,我用的是json格式字符串,然后再利用阿里巴巴的fastjson库解析。

特别注意:本人是用jax-ws开发的webservice,传参数的时候,参数名必须为arg0,arg1,arg2...,否则会找不到参数。

public final class RequestWebService {	
	@SuppressWarnings("finally")
	public static String request(String methodName,String[] args){
		String s = "";
		ConnectivityManager connectivityManager = NetworkState.init(MyApplication.getInstance().getApplicationContext());
		Boolean isConnected = NetworkState.isConnected(connectivityManager);
		if(isConnected){
			try {
				Properties prop = new Properties();   
				InputStream in = RequestWebService.class.getResourceAsStream("/setting.properties");   
				prop.load(in);   
				String http = prop.getProperty("http").trim(); 
				String ip = prop.getProperty("ip").trim(); 
				String port = prop.getProperty("port").trim(); 
				String webservice = prop.getProperty("webservice").trim();
				//Toast.makeText(MainActivity.this, ip, Toast.LENGTH_SHORT).show();
		        String serviceUrl = http+"://"+ip+":"+port+"/"+webservice+"/AlarmPort";
		        String namespace  = http+"://server/";
		        //String methodName = "login";  
		        // 第1步:创建SoapObject对象,并指定WebService的命名空间和调用的方法名  
		        SoapObject request = new SoapObject(namespace, methodName);  
		        // 第2步:设置WebService方法的参数  
		        for(int i=0;i<args.length;i++){
		        	request.addProperty("arg"+i, args[i]);
		        }
		        // 第3步:创建SoapSerializationEnvelope对象,并指定WebService的版本  
		        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);  
		        // 设置bodyOut属性  
		        envelope.dotNet = false;  
		        envelope.setOutputSoapObject(request);  
		        // 第4步:创建HttpTransportSE对象,并指定WSDL文档的URL  
		        HttpTransportSE ht = new HttpTransportSE(serviceUrl);          
		           
		        // 第5步:调用WebService 
		        ht.call(namespace+methodName, envelope); 
		        SoapObject result = (SoapObject)envelope.bodyIn;  
		        
		        s = (String)result.getProperty(0).toString();
	        }catch (Exception e){ 
	        	e.printStackTrace();
	        	s = "{success:false,error:'【"+e.getMessage()+"】'}";
	        } finally{
	        	return s;
	        }
		}else{
			return "{success:false,error:'网络未连接,请检查网络!'}";
		}
		
	}
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值