2012-06-07 2 views
1

При тестировании приложения я продолжаю получать ошибки, возникающие спорадически только на одном устройстве: GT-I9100 (европейский) Samsung Galaxy S II. Эти ошибки не встречаются ни на одном другом устройстве, даже в SPH-D710 (Sprint) Samsung Galaxy S II.Sporadic UnknownHostException на Samsung Galaxy S II

URL-адреса, используемые приложением, не изменяются. Это то же самое, что я могу напечатать в веб-браузере или использовать 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); 

    ... ... 

Есть ли причуда Samsung Galaxy S II, что может быть причиной этого? На нем работает Android 2.3.6.

+0

я увидел еще один пример этого в докладе аварии АКРА для другого приложения, работающего на Droid Razr. Этот код использовал androidHttpClient.execute (httpPost). Жестко закодированный URL-адрес является абсолютно допустимым, но бросает UnknownHostException –

+0

Не происходит ли событие UnknownHostException, когда устройство не имеет подключения к Интернету? – you786

+0

Нестабильное (или даже несуществующее) подключение к Интернету может вызвать исключение UnknownHostException. – Floern

ответ

1

Как утверждают другие, это может быть вызвано несуществующим подключением к Интернету.

Может быть, попробуйте добавить обработчик повторных попыток запроса как так ..

HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true); 

    httpClient.setHttpRequestRetryHandler(retryhandler); 

Таким образом, если интернет уходит на долю секунды ты HttpClient может справиться с этим. Here апача также предполагает повторные попытки, если у вас есть какие-либо транспортные ошибки

правила транспорта исключение не критично и может быть извлечено из по повтору отказавшего метода.

Так что я хотел бы предложить это хорошая практика, чтобы использовать обработчик Retry в любом случае

+0

У меня не было возможности проверить это и определить, может ли это быть надежным решением для этой спорадической ошибки ... но повторное подключение к Интернету, по-видимому, является консенсусом и лучшим вариантом, который кто-либо выдвинул. –

0

Незнакомое исключение может быть результатом ненадежного или несуществующего интернет-соединения. У вас должен быть только блок try/catch, чтобы поймать их и выполнить любые шаги, необходимые для решения проблемы (возможно, попросите пользователя проверить их подключение к Интернету).

Я предполагаю, что причина, по которой в европейской версии больше проблем, заключается в том, что здесь нет службы (предполагается, что вы работаете в США)?

Смежные вопросы