【Android學習筆記】Android端調用Webservice接口(基礎)

一、準備相關資料

下載好最新版本的ksoap2 jar包並導入到需要調用Webservice的項目中(官網:http://code.google.com/p/ksoap2-android/)。


二、Webservice的調用(

public class WCF {
	 
	private static final String NameSpace = "服務器名稱";
    private static final String URL = "服務器的URL";
    private static final String Method = "調用接口裏面的方法名";
    private static final String ACTION = "調用的動作,即URL+Method";

    
    public String Request() {  
    	
    	String result = ""; //定義返回值類型
    	
        SoapObject soapObject = new SoapObject(NameSpace, Method);
        soapObject.addProperty("參數名", "參數值"); //調用的方法若是有參數的,則從這裏設置參數

        
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // 版本
        envelope.bodyOut = soapObject;
        envelope.dotNet = true;
        envelope.setOutputSoapObject(soapObject);
        
        HttpTransportSE trans = new HttpTransportSE(URL); //創建Http傳輸對象
        trans.debug = true; // 使用調試功能
        
        try {
            trans.call(ACTION, envelope);
            System.out.println("Call Successful!");
        } catch (IOException e) {
            System.out.println("IOException");
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            System.out.println("XmlPullParserException");
            e.printStackTrace();
        }
        
        try {
			result = envelope.getResponse().toString();
		} catch (SoapFault e) {
			// TODO 自動生成的 catch 塊
			e.printStackTrace();
		}
        
        return result;
    }  
}
此類可以先在Java項目中測試通過再複製到Android項目中使用,這樣調試起來會比較方便。


三、MainActivity調用WCF類完成對Webservice接口的調用


首先,我們必須爲Android項目添加網絡功能的許可,只需要在AndroidManifest文件中添加一下語句即可

<uses-permission android:name="android.permission.INTERNET" />

接着,我們就可以開始編寫MainActivity中的代碼了,由於MainActivity的代碼大部分爲系統生成,而其他組件的添加在這裏不一一贅述了,我們直接看調用Webservice的方法和步驟。因爲Android系統的線程是安全的,所以我們不能在MainActivity中直接調用WCF類,而需要開闢一個線程去調用。下面我們將繼承AsyncTask類,並覆蓋其doInBackground和onPostExecute方法

private class AsyncRequest extends AsyncTask<String,Integer,String>{  //這三個參數分別代表傳輸參數的類型、返回參數的個數以及返回參數的類型
		@Override
		protected String doInBackground(String... arg) {
			// TODO Auto-generated method stub
			WCF ws = new WCF(); //實例化WCF類
			return ws.Request(arg[0]); //傳遞參數
		}
		@Override
		protected void onPostExecute(String result) {
			// TODO Auto-generated method stub
			super.onPostExecute(result); //result爲返回參數的值
		}
	}
}


最後,我們只需一句代碼便能執行調用

new AsyncRequest().execute("參數值");


當然,異步調用Webservice還可以使用線程,即Runnable,這個只要有一定Java基礎的人都能掌握,這裏就不再舉例演示了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章