一、開發前準備
1、下載jar包,下載地址
http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2
下載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();
}