我一直在使用ksoap2庫來處理所有的SOAP調用,並且它們都已經成功。但是,當我嘗試調用使用WSE的Web服務時,我收到以下錯誤...在Android上使用WSE調用web服務
代碼:soap:發件人,原因:WSE012:輸入不是有效的SOAP消息,因爲缺少以下信息:行動。
從我可以告訴,這意味着SOAP動作在頭必需的,但SOAPAction的不是12版http://code.google.com/p/ksoap2-android/issues/detail?id=67
當我添加一個有效的報頭中的文檔中它明確規定作爲標題我只是收到「服務器無法處理請求」錯誤。我一直堅持這一段時間,並希望有人知道發生了什麼。這裏是主代碼...
SoapObject request = new SoapObject(namespace, methodName);
request.addProperty(name, value);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
try {
HttpTransportSE transport = new HttpTransportSE(URL);
List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
headers.add(new HeaderProperty("SOAPAction", soapAction));
transport.call(soapAction, envelope, headers);
} catch (Exception e) {
e.printStackTrace();
}
該調用方法有另一個構造函數,允許將頭添加爲參數。在深入研究代碼之後,soapAction從未在ver12中實際使用過。您可以傳入一個空參數,並且對於非WSE Web服務仍然可以正常工作。我不確定這樣做或設置envelope.headerOut之間的區別是什麼。我只是想知道定義該特定URL的soap動作的目的是什麼? – user2983641