0

私はアンドロイドが初めてで、SOAP Webサービスの呼び出しが初めてです。ksoap2 ライブラリを使用して SOAP ベースの Web サービスを呼び出そうとしていますが、継続的にエラー メッセージが表示されます

java.io.IOException: HTTP 要求が失敗しました。HTTP ステータス: 405

しかし、なぜそれが起こっているのか理解できません。インターネットで検索しましたが、問題の解決策が見つかりませんでした。

これらは私が使用しているフィールドです:

private static final String METHOD_NAME = "Authenticate";
private static final String SOAP_ACTION = "http://tempuri.org/IService1/Authenticate";
private static final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
private static final String NAMESPACE = "http://tempuri.org/";

これは wsdl の URL です: http://www.w3schools.com/webservices/tempconvert.asmx?WSDL

これは要求形式である必要があります: http://www.w3schools.com/webservices/tempconvert.asmx?WSDL

このサービスを Web サービス スタジオでテストしたところ、次の要求があり、正常に動作しています。

<?xml version="1.0" encoding="utf-16"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><Authenticate xmlns="http://tempuri.org/">
  <UserName>test</UserName>
  <Password>test</Password>
</Authenticate></soap:Body></soap:Envelope>

以下のコードを使用してこのサービスを呼び出そうとしています

request = new SoapObject(NAMESPACE, METHOD_NAME);       
request.addProperty("UserName","test");
request.addProperty("Password","test");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.setOutputSoapObject(request);

HttpTransportSE ht = new HttpTransportSE(URL);
ht.call(SOAP_ACTION, envelope);

ですから、このサービスからの応答を得るのを手伝ってください。

4

1 に答える 1

1

なぜあなたはとして使用し"http://demo.knowcross.com/TritonMobileService";ていURLますか?wsdlで見つけることができるサービスアドレスは次のとおりです。

<soap:address location="http://demo.knowcross.com/TritonMobileService/Service1.svc"/>

として使用する必要がありますURL

編集:正しいht.debug=trueかどうかを設定して確認できます。ht.requestDumpまず、次のようにプロパティの名前空間を追加する必要があります。

PropertyInfo p = new PropertyInfo();
p.setNamespace(NAMESPACE);
p.setValue("test");
p.setName("UserName");
request.addProperty(p);
p = new PropertyInfo();
p.setNamespace(NAMESPACE);
p.setValue("test");
p.setName("Password");
request.addProperty(p);
于 2013-09-15T05:40:10.233 に答える