ksoap2 で SOAP 12 Web サービスの呼び出しをテストしました。このコードを使用して Web サービスを呼び出しました。
SoapObject request = new SoapObject(NAMESPACE, NAME);
request.addProperty("id", ID);
request.addProperty("name", "test@test.de");
request.addProperty("pw", "password");
request.addProperty("listid", 501);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.setOutputSoapObject(request);
AndroidHttpTransport client = new AndroidHttpTransport(URL);
try {
client.call(NAMESPACE + NAME, envelope);
Object response = envelope.getResponse();
} catch (IOException e) {
Log.e(getClass().getSimpleName(), "IO Problem", e);
} catch (XmlPullParserException e) {
Log.e(getClass().getSimpleName(), "Parser Problem", e);
}
次の例外が発生します。
org.xmlpull.v1.XmlPullParserException:expected: START_TAG {http://www.w3.org/2001/12/soap-envelope}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/soap/envelope/}soapenv:Envelope>@1:114 in java.io.InputStreamReader@44f28a80)
これはサーバーの応答の問題ですか、それともこれまでのコードに何か問題がありますか? 他のユーザーも同じ問題を抱えているようです。Envelope を SoapEnvelope.VER11 に変更すると、さらに一歩進みます (おそらく間違った URL が原因で、SOAP サーバーからアクセス拒否の応答が返されます)、VER12 エンベロープを作成するための追加情報が不足している可能性があります。