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

2023-11-21

我使用 jQuery mobile 和 Phonegap(现在的 Cordova)开发了一个 iPhone/Android 应用程序。这个应用程序使用不同的服务没有问题。其中一项服务是 Soap 服务,因此我使用 jQuery 的 jsSOAPClient (jquery.jqSOAPClient.js) 来请求该服务。我在 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 上有结果。

感谢帮助。

/ EDIT


显然 Android 2.x 中存在一个错误,即设置 “Content-length”标头会导致您描述的问题。看起来像 该bug已在Android 4.0.3中修复。所以尝试不修改你的代码 在 4.0.3 模拟器中,它应该可以工作,然后返回 2.x 并 删除 Content-length 标头以查看它是否也有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jQuery / Phonegap 进行 Soap 查询在 Android 上总是失败 的相关文章

随机推荐