2012-04-16 69 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和 刪除內容長度標題以查看它是否也適用。