2012-05-09 9 views
1

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

同じアプリケーションを起動しようとすると
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以降でこのアプリケーションが必要です

どこから始めたらいいですか?

EDIT:これは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(); 

    } 

答えて

2

ksoap2にも同様の問題がありました。アプリケーションはAndroid 2.3では動作していましたが、2.3.3では動作しませんでした。問題がcaseingたので、私はレスポンスヘッダパラメータを探していた原因となるもの:

set-cookie 

Set-Cookie 

IgnoreCaseのinstedは私の問題を解決しました。あなたは常に、wiresharkを使ってエミュレータからのhttpメッセージをキャッチし、それらを比較するべきです。

関連する問題