Android進價篇-SOAP協議

使用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;













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章