2014-01-30 59 views
1

我的應用程序,以這樣的方式與服務器通訊:鈦合金了HTTPClient超時不起作用

var url = "http://my.server.com"; 
var client = Ti.Network.createHTTPClient({ 
    onload : function(e) { 
     Ti.API.info("Received text: " + this.responseText); 
     alert('success'); 
    }, 
    onerror : function(e) { 
     Ti.API.debug(e.error); 
     alert('error'); 
    }, 
    timeout : 5000 
}); 

client.open("GET", url); 
client.send(); 

當服務器在線所有工作正常,但是,當服務器脫機的onerror函數不運行,即使5000毫秒進行過去。

這是一個鈦錯誤? 我做錯了什麼?

回答

1

您的代碼在我的機器上運行良好,在3.2GA Titanium SDK和iOS 7.0.3 iPhone模擬器下。

由於我無法重現該問題,您可以:

  • 檢查正在運行的是什麼版本的SDK和模擬器,也許更新一方或雙方可能會有幫助。
  • 嘗試添加一個頭文件(請參閱下面的代碼)
  • 您可以在創建請求時嘗試分離回調函數,這樣至少可以在創建請求時出現問題,或者爲什麼回調函數不是一點都不叫。

事情是這樣的:

var url = "http://my.server.com"; 
var client = Ti.Network.createHTTPClient(); 
client.setTimeout(5000); 
client.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
client.onerror = function(e) { 
alert("Ops!"); 
}; 
client.send(); 

看看是否有那爲你工作。

+0

我已經明確地定義了這裏提到的超時的更好的成功。 => client.setTimeout(5000); – Martin

+0

@ mircobe87爲你做了這些工作嗎? – LucasA