Android 2.2 vs 2.3 - soapaction与HTTP标头中的SOAPAction

时间:2012-05-09 12:52:37

标签: android http-headers ksoap2 android-ksoap2

使用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世界中存在这样的事情),相同的源,库,肥皂配置,请求,服务器等 - 但这次是在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();

    }

1 个答案:

答案 0 :(得分:2)

我和ksoap2有类似的问题。应用程序正在Android 2.2版上工作,但在2.3.3上没有。引起问题的事情是caseing,所以我一直在寻找响应头参数:

set-cookie 

insted of

Set-Cookie

IgnoreCase解决了我的问题。你应该总是尝试用wireshark从模拟器中捕获http消息,然后比较它们。