使用SOAP協議的前提是你必須下載一個KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包
然後操作的第一步:
實例化SoapObject對象:
1.serviceNameSpace 命令空間
2.methodName 調用方法
SoapObject request=new SoapObject(serviceNameSpace, methodName);
第二步:
如果有參數的話,設置調用參數
request.addProperty("參數名稱","參數值");
第三步:
設置SOAP請求信息(參數部分爲SOAP協議版本號,與你要調用的webService中版本號一致)
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
第四步:
註冊Envelope
(new MarshalBase64()).register(envelope);
第五步:
構建傳輸對象,並指明WSDL文檔URL
String serviceURL = "http://webservice.WebXml.com.cn/WebServices/WeatherWS.asmx";
AndroidHttpTransport ht = new AndroidHttpTransport(serviceURL);
ht.debug = true;
第六步:
調用WebService(其中參數爲1:命名空間+方法名稱,2:Envelope對象)
ht.call(serviceNameSpace+methodName, envelope);
實例代碼:
SoapObject detail = null;
try {
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
rpc.addProperty("theCityName", cityName);
AndroidHttpTransport ht = new AndroidHttpTransport(URL);
ht.debug = true;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = true;
envelope.setOutputSoapObject(rpc);
ht.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
detail = (SoapObject) result.getProperty("getWeatherbyCityNameResult");
} catch (Exception e) {
e.printStackTrace();
}
return detail;