2012-06-07 4 views
1

앱을 테스트 할 때 GT-I9100 (European) Samsung Galaxy S II의 한 장치에서만 산발적으로 오류가 발생합니다. 이러한 오류는 다른 장치에서는 발생하지 않으며 SPH-D710 (Sprint)의 Samsung Galaxy S II조차도 발생하지 않습니다.삼성 Galaxy S II의 산발적 인 UnknownHostException

앱에서 사용하는 URL은 변경되지 않습니다. 웹 브라우저에 입력 할 수있는 것과 동일하거나 iOS 및 데스크톱 버전의 앱을 사용합니다. 하지만 때로는 UnknownHostException을 던지고 때로는 그렇지 않습니다. 이 원인이 될 수 삼성 갤럭시 S II의 특질이

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); 

    ... ... 

있습니까 : 여기

내가 사용하고있는 코드의 크게 소독 버전? Android 2.3.6을 실행 중입니다.

+0

를 사용하는 것이 좋습니다 제안했다. 그 코드는 androidHttpClient.execute (httpPost)를 사용했습니다. 하드 코드 된 URL은 완벽하게 유효하지만 UnknownHostException을 던졌습니다. –

+0

장치에 인터넷 연결이 없을 때 UnknownHostException이 발생하지 않습니까? – you786

+0

불안정한 (또는 존재하지 않는) 인터넷 연결로 인해 UnknownHostException이 발생할 수 있습니다. – Floern

답변

1

다른 사람들은 존재하지 않는 인터넷 연결로 인해 발생할 수 있다고 말했기 때문에. 인터넷이 두 번째 당신이 HttpClient를 그것을 처리 할 수있는 분할을 위해 꺼질 경우

아마

HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true); 

    httpClient.setHttpRequestRetryHandler(retryhandler); 

.. 그래서 같이 요청 재시도 핸들러를 추가하는이 방법을 시도해보십시오. 당신은 일반적으로 예외가 비 치명적이고 실패한 방법을 재 시도에 의해 에서 복구 할 수 있습니다 수송 어떤 전송 오류

이있는 경우 Here 아파치도 재 시도를 제안한다.

그래서 나는 모토로라 레이저에서 실행중인 다른 응용 프로그램에 대한 ACRA 충돌 보고서에 재시도 핸들러에게 나는이의 또 다른 예를 보았다 어쨌든

+0

나는 이것을 시험해보고 장치를 통해이 산발적 인 오류에 대한 신뢰할 수있는 해결책인지 결정하지는 못했지만 인터넷 연결을 다시 시도하는 것은 누구나 제시 한 최상의 선택 인 것 같습니다. –

0

UnknownHostException은 신뢰할 수 없거나 존재하지 않는 인터넷 연결로 인해 발생할 수 있습니다. try/catch 블록을 사용하여 이러한 문제를 파악하고 문제를 해결하는 데 필요한 모든 단계를 수행해야합니다 (사용자에게 인터넷 연결을 확인하도록 요청할 수 있음).

유럽 버전에 더 많은 문제가있는 이유는 여기에 서비스가 없기 때문입니다 (미국에서 일한다고 가정).

관련 문제