使用jQuery / Phonegap进行肥皂查询总是在Android上失败

时间:2012-04-16 15:22:55

标签: jquery android soap jquery-mobile cordova

我用jQuery mobile& amp;开发了一个iPhone / Android应用程序。 Phonegap(现为Cordova)。这个应用程序使用不同的服务没有问题。其中一个服务是Soap一个,所以我使用jsSOAPClient(jquery.jqSOAPClient.js)为jQuery请求服务。我在iOS设备上没有任何问题,但查询总是在Android上失败。

在jsSOAPClient中,请求看起来像这样:

        function getResponse(xData, status) {
            if(!!callback) {
                SOAPClient.Status = xData.status;
                SOAPClient.ResponseText = xData.responseText;
                SOAPClient.ResponseXML = xData.responseXML;
                callback(xData.responseXML);
            }
        }

        $.ajax({
             type: "POST",
             url: SOAPClient.Proxy,
             dataType: "xml",
             processData: false,
             data: content,
             complete: getResponse,
             beforeSend: function(req) {
                req.setRequestHeader("Method", "POST");
                req.setRequestHeader("Content-Length", SOAPClient.ContentLength);
                req.setRequestHeader("Content-Type", SOAPClient.ContentType + "; charset=\"" + SOAPClient.CharSet + "\"");
                req.setRequestHeader("SOAPServer", SOAPClient.SOAPServer);
                req.setRequestHeader("SOAPAction", soapReq.Action);
             }
        });

“getResponse”“status”值为“error”,“SOAPClient.Status”(等于“xData.status”)值为“0”。

服务器似乎根本没有收到请求......

我重申,具有相同请求数据的相同代码在iOS上有结果。

感谢您的帮助。

/ 编辑 * / 我试着评论这条线:

//type: "POST",

它似乎工作,我的意思是我在这种情况下有一个200状态代码,即使我有一个由于意外的响应格式导致的解析错误。

1 个答案:

答案 0 :(得分:1)

显然Android 2.x中存在设置错误的错误 "内容长度"标题会导致您描述的问题。看起来像 该问题已在Android 4.0.3中得到修复。所以尝试不修改你的代码 在4.0.3模拟器中它应该工作然后回到2.x和 删除Content-length标头以查看它是否也能正常工作。

相关问题