2012-04-16 30 views
11

我使用jQuery mobile & Phonegap(现在为Cordova)开发了iPhone/Android应用程序。这个应用程序使用不同的服务没有问题。其中一个服务是Soap,所以我使用jsSOAPClient(jquery.jqSOAPClient.js)用于jQuery以请求服务。我从iOS设备上完全没有问题,但在Android上查询总是失败。使用jQuery/Phonegap的肥皂查询在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的”, “状态” 的值是 “错误” 和 “SOAPClient.Status”(等于 “xData.status”)的值是“ 0" 。

服务器似乎没有收到要求在所有...

我再说一遍,用相同的请求DATAS相同的代码对iOS的结果。

感谢您的帮助。

/编辑 */ 我试图评论的行:

//type: "POST", 

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

+0

我有同样的问题,因此,我提供的赏金。我有一些额外的信息。我让网络管理员使用wireshark观看手机和服务器之间的数据包。以下是他观察到的结果: – 2012-06-19 21:27:49

+0

“TLSv1似乎正在中止服务器确认的加密警报。有FIN包,然后是复位(RST)。这看起来像是在客户端尾部发生故障的握手谈判进程结束。“我看了一条消息,看到:“TLSv1记录层:加密警报;内容类型:警报(21);版本TLS 1.0(0x0301);长度24;警报消息:加密警报”。就像OP一样,我只在Android上遇到问题。 – 2012-06-19 21:35:10

+1

这里有两个链接的人看到我们在wireshark中的同一件事:http://code.google.com/p/android/issues/detail?id = 8334和http://groups.google.com/group/android -security-discuss/tree/browse_frm/month/2010-05?_done =%2Fgroup%2Fandroid-security-discuss%2Fbrowse_frm%2Fmonth%2F2010-05%3F& – 2012-06-19 22:32:43

回答

1

显然在Android 2.x中存在一个错误,其中设置 “内容长度”标题会导致您描述的问题。它看起来像 该错误已在Android 4.0.3中修复。因此,请尝试在4.0.3模拟器中修改代码 ,并且它应该可以工作,然后再回到2.x和 删除内容长度标题以查看它是否也适用。