Android访问远程数据库之调用Webservice

由于WebService 是一种基于SOAP 协议的远程调用标准,而Android SDK 没有提供调用WebService 的库, 在Android平台调用Web Service 需要依赖于第三方类库ksoap2。

使用方法如下:

	public JSONObject getWebService() throws Exception{
		String ServerUrl = "WebService地址";
		String NameSpace = "WebService命名空间";
		String methodName = "WebService方法名";
		SoapObject soapObject = new SoapObject(NameSpace, methodName);
		soapObject.addProperty("参数名", "参数值");
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
		envelope.dotNet = true;
		envelope.setOutputSoapObject(soapObject);
		HttpTransportSE httpTranstation = new HttpTransportSE(ServerUrl);
		httpTranstation.call(NameSpace + methodName, envelope);
		Object result = envelope.getResponse();
		String data = (String) result.toString();
		JSONObject jsonObject = new JSONObject(data);
		return jsonObject;
	}

Android在主线程进行网络访问时,为了防止主线程阻塞,需要使用异步处理。Android提供了一个轻量级的类,即AsyncTask,使用如下:

	 private class AsynWebservice extends AsyncTask<String, Void, JSONObject> {

			@Override
			protected JSONObject doInBackground(String... params) {
				JSONObject data = null;
				try {
				        data = getWebService();
				} catch (Exception e) {
					e.printStackTrace();
				}
				return data;
			}

			@Override
			protected void onPostExecute(JSONObject result) {
				if (result == null)
					return;
				try {
					//获取数据后的操作
					
				} catch (JSONException e) {
					e.printStackTrace();
				}
			}
		}

获取数据使用:

         new AsynWebservice().execute();

对AsyncTask的简要说明:

AsyncTask定义了三种泛型类型 Params,Progress和Result。
1、Param:启动任务执行时输入的参数。
2、Progress:后台任务执行的百分比。
3、Result:后台执行任务最终返回的结果,比如上面的JSONObject。


使用AsyncTask 最少要重写以下这两个方法:
1、doInBackground(Params…):后台执行,比较耗时的操作都放在这里。注意:这里不能直接操作UI。
2、onPostExecute(Result) :在这里面可以使用在doInBackground 得到的结果及操作UI。 


有必要的话你还可以重写以下这三个方法:
1、onProgressUpdate(Progress…)  :用于显示任务执行的进度,可以使用进度条增加用户体验度。
2、onPreExecute() :任务开始执行之前调用。
3、onCancelled()  :任务取消以后调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值