1

ksoap2ライブラリ(v2.6.4)、SOAPバージョン11を使用して、2.3.3エミュレータデバイスを介してWebサービスを実行しています。サーバーは要求されたアクションを認識し、期待される応答を提供します。HTTP / 1.1ヘッダー(サーバー側でデバッグ)には、次のものが含まれています。

User-Agent: ksoap2-android/2.6.0+
SOAPAction: myAction
Content-Type: text/xml;charset=utf-8
Connection: close
Content-Length: 1481
Host: xxx.xxx.xxx.xxx
Accept-Encoding: gzip

同じアプリケーションを起動しようとしています-すべてが同じです(ITの世界にそのようなものがある場合)、同じソース、ライブラリ、soap構成、リクエスト、サーバーなど-しかし今回は2.2エミュレーターデバイスで。サーバーは、SOAPActionが要求から欠落していると主張して要求を拒否します。ログには、このリクエストに次のHTTPヘッダーが含まれていることが示されています。

user-agent: ksoap2-android/2.6.0+
soapaction: myAction
content-type: text/xml;charset=utf-8
connection: close
content-length: 1481
Host: xxx.xxx.xxx.xxx

したがって、SOAPAction(ヘッダーの他の部分の中でも)は小文字のパラメーターとして到着します。サーバーは小文字の「soapaction」を認識せず、私の要求を拒否します。Android 2.2以降で動作するには、このアプリケーションが必要です

どこから始めればいいですか?

編集:これは私がSOAPリクエストを送信する方法です。それが助けになるなら。

    public Object executeMyFunction(SoapObject request) throws Exception {

            SoapSerializationEnvelope envelope = new
 SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            envelope.implicitTypes = false;
            envelope.dotNet = true;
            envelope.setAddAdornments(false);

            HttpTransportSE _ht = new HttpTransportSE(Configuration.getWsUrl());
            _ht.call("myFunction", envelope);
            return envelope.getResponse();

    }
4

1 に答える 1

2

ksoap2でも同様の問題が発生しました。アプリケーションはAndroidバージョン2.2で動作していましたが、2.3.3では動作していませんでした。問題の原因となったのはケースでしたので、応答ヘッダーパラメーターを探していました:

set-cookie 

Set-Cookie

IgnoreCase私の問題を解決しました。常にwiresharkを使用してエミュレータからのhttpメッセージをキャッチし、それらを比較する必要があります。

于 2012-10-12T08:33:15.857 に答える