android平臺實現通過調用WebService獲取服務器信息

一、開發前準備

1、下載jar包,下載地址

http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2

或直接點擊 http://ksoap2-android.googlecode.com/svn/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/3.0.0/ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar

下載ksoap***.jar

2、在eclipse中新建一個android app工程

3、用鼠標將下載下來的jar包拖動到新建工程的lib文件加下,出現提示,選擇copy

4、在新建的工程文件夾點右鍵屬性,選擇Java Build Path,右面選擇libraries,點擊右面的 AddJARs,選擇那個jar包,點擊OK

5、打開工程的AndroidManifest.xml文件,加上

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

表示可以訪問網絡,並將android:minSdkVersion 設置爲"11"

6、在主程序進行操作前加上以下代碼

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());


主要原因是,android4.0以後的版本不允許在主程序中進行聯網操作,否則會報如下錯誤

android.os.NetWorkOnMainException和android.os.NetWorkOnMainThreadException

二、程序中實現訪問Webservice

private static final String NAMESPACE ="所調用的WebService的命名空間";

private static String URL = "所調用的WebService的地址";
private static final String METHOD_NAME = "所調用的WebService中的方法";

try {

   SoapObject rpc = newSoapObject(NAMESPACE, METHOD_NAME);

  rpc.addProperty("WebService中該方法中的參數1名稱", 參數1的值);

  rpc.addProperty("WebService中該方法中的參數2名稱", 參數2的值);

   //.....有幾個參數設置幾個值

   SoapSerializationEnvelopeenvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
   envelope.bodyOut = rpc;
   envelope.dotNet= true;
   envelope.setOutputSoapObject(rpc);

   HttpTransportSE ht = newHttpTransportSE(URL);
   ht.debug =true;

   ht.call(null,envelope);

   SoapObjectresult = (SoapObject)envelope.bodyIn;

   String vf=result.getProperty("所調用的WebService該方法返回值參數名").toString();

   //vf就是你獲取的返回值

} catch (Exception e) {
   e.printStackTrace();
  }


發佈了17 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章