Cha*_*rly 11 jquery android soap jquery-mobile cordova
我用jQuery mobile&Phonegap(现在的Cordova)开发了一个iPhone/Android应用程序.这个应用程序使用不同的服务没有问题.其中一个服务是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);
}
});
Run Code Online (Sandbox Code Playgroud)
"getResponse""status"值为"error","SOAPClient.Status"(等于"xData.status")值为"0".
服务器似乎根本没有收到请求...
我再说一遍,具有相同请求数据的相同代码在iOS上有结果.
感谢帮助.
/ 编辑 * /我试图评论这条线:
//type: "POST",
Run Code Online (Sandbox Code Playgroud)
它似乎工作,我的意思是我在这种情况下有一个200状态代码,即使我有一个由于意外的响应格式的解析错误.
显然,Android 2.x 中存在一个错误,其中设置“Content-length”标头会导致您描述的问题。看来这个bug已经在Android 4.0.3中修复了。因此,在 4.0.3 模拟器中尝试未修改的代码,它应该可以工作,然后返回到 2.x 并删除 Content-length 标头,看看它是否也可以工作。
| 归档时间: |
|
| 查看次数: |
1780 次 |
| 最近记录: |