2017-02-08 50 views
0

自從大約2天以來,我正在解決這個問題,但我無法找到解決問題的方法。 我有一個服務可以使用特定的URL調用,並使用方法POST和'application/x-www-form-urlencoded'作爲數據類型發送一些參數。HttpClient在Android和iOS上的處理方式不同嗎?

此服務將在每次調用時都會使用時間戳更新數據庫表(如'上次登錄')。

在Android上,我的代碼按預期運行,但在iOS(模擬器)上運行它沒有任何作用......使用'Charles'我知道服務是從兩個模擬器中調用的,但我注意到響應需要大約60ms在iOS上約爲10000毫秒。

這是我用來調用服務的代碼:

function updateUserModules(_params) { 
    if(_params.Number) { 
     var token = md5HashEncoder(_params.Number + '$XDTPEP132x '); 
     Ti.API.warn('TOKEN: ' + token); 

     var httpClient = Ti.Network.createHTTPClient(); 

     httpClient.open("POST", "https://myxd.xdpartners.com/updateUsedModules"); 
     httpClient.setRequestHeader("content-type", "application/x-www-form-urlencoded"); 

     var params = { 
      token: token, 
      licenceNumber: _params.Number, 
      moduleKeyId: "71", 
      terminalId: "0", 
      lastUsedDate: moment().format('YYYY-MM-DD HH:mm:ss') 
     }; 

     httpClient.send(params); 
    } 
} 

任何想法,其中的問題是什麼?

+0

我已經完成了對Android和iOS的相同URL的HTTP實現,是的,它們是非常不同的。你能發佈無法工作的iOS代碼嗎? – Josh

+0

嗨喬希,你的意思是不能工作的iOS代碼?要調用服務,我只在Android和iOS上使用此代碼,這與Android上的操作相同,但不在iOS上。 –

+0

我認爲你的iOS客戶端代碼有問題,因爲該服務證明在Android上運行良好。 @Luis Pedro – Josh

回答

1

我相信你的SSL證書有問題。運行一些調整PARAMS你的代碼,並添加onerror處理給了我這樣的輸出:

[ERROR] : { 
[ERROR] :  code = "-1202"; 
[ERROR] :  error = "The certificate for this server is invalid. You might be connecting to a server that is pretending to be \U201cmyxd.xdpartners.com\U201d which could put your confidential information at risk."; 
[ERROR] :  source = "[object TiNetworkHTTPClient]"; 
[ERROR] :  success = 0; 
[ERROR] :  type = error; 
[ERROR] : } 

的Android> 5在某些情況下更寬容,這或許可以解釋爲什麼它在那裏工作。

+0

這就是我發現的,我通過從「https」中刪除「s」來解決它。我知道我移除了安全性,但在這種情況下我不會分辨,因爲我沒有傳遞任何明智的數據。 –

0

嘗試httpClient.send(JSON.stringify(params));,而不是httpClient.send(params);

,而我也有同樣的問題,你這個固定在我的項目。

相關問題