2012-06-07 109 views
1

在測試應用程序時,我不斷收到偶爾出現在一款設備上的錯誤:GT-I9100(歐洲)三星Galaxy S II。這些錯誤不會發生在任何其他設備上,甚至不會發生在SPH-D710(Sprint)三星Galaxy S II上。Samsung Galaxy S II上的零星UnknownHostException

該應用使用的URL不會更改。它們與我可以輸入到Web瀏覽器中的相同,或者應用程序的iOS和桌面版本使用的相同。但有時他們會拋出UnknownHostException,有時他們不會。

這裏是我使用的代碼的重消毒版本:

AndroidHttpClient client = AndroidHttpClient.newInstance(activity.getString(R.string.user_agent)); 
HttpPost httpPost = new HttpPost("http://" + subdomainId + ".website.com/doSomething.aspx"); 

    try { 
    // Add your data 
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("parameter1", value1)); 
    nameValuePairs.add(new BasicNameValuePair("parameter2", value2)); 
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

    // Execute HTTP Post Request 
    HttpContext httpContext = new BasicHttpContext(); 
    HttpResponse response = client.execute(httpPost, httpContext); 

    ... ... 

是否有可能會造成這個三星Galaxy S II的任何怪癖?它運行的是Android 2.3.6。

+0

我看到的另一個例子在ACRA崩潰報告上的DROID RAZR運行不同的應用程序很好的做法。該代碼使用了androidHttpClient.execute(httpPost)。硬編碼的URL是完全有效的,但拋出UnknownHostException –

+0

當設備沒有互聯網連接時不會發生UnknownHostException? – you786

+0

不穩定(甚至不存在)的Internet連接可能導致UnknownHostException。 – Floern

回答

1

正如其他人所說,它可能是由不存在的互聯網連接引起的。

也許嘗試加入的請求重傳處理器,像這樣..

HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true); 

    httpClient.setHttpRequestRetryHandler(retryhandler); 

這樣,如果互聯網熄滅的一瞬間,你HttpClient的可以處理它。 Here阿帕奇也建議重試,如果您有任何運輸錯誤

一般運輸例外非致命性,可能通過重試從 恢復失敗的方法。

所以我建議是使用重傳處理器反正

+0

我還沒有機會測試這一點,並確定是否跨設備,這是一個可靠的解決方案,這種零星的錯誤...但重試互聯網連接似乎是共識和任何人提出的最佳選擇。 –

0

UnknownHostException可能來自不可靠或不存在的Internet連接。你應該只需要一個try/catch塊來捕獲這些數據,並且執行任何必要的步驟來解決這個問題(也許要求用戶檢查他們的網絡連接)。

我在猜測歐洲版本有更多問題的原因是因爲它沒有服務(假設你在美國工作)?

相關問題