三星Galaxy S II上零星的UnknownHostException

时间:2012-06-07 22:12:31

标签: android httpclient

在测试应用程序时,我不断只在一台设备上出现错误:GT-I9100(欧洲)三星Galaxy S II。这些错误不会出现在任何其他设备上,甚至不会出现在SPH-D710(Sprint)三星Galaxy S II上。

应用使用的网址不会更改。它们与我可以在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。

2 个答案:

答案 0 :(得分:1)

正如其他人所说,这可能是因为没有互联网连接造成的。

也许尝试添加请求重试处理程序,如此..

    HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true);

    httpClient.setHttpRequestRetryHandler(retryhandler);

这样一来,如果互联网熄火一秒钟,httpclient就可以处理它了。如果您有任何传输错误,Here apache也会建议您重试

  

通常,运输异常是非致命的,可以从中恢复   通过重试失败的方法。

所以我建议最好使用重试处理程序

答案 1 :(得分:0)

UnknownHostException可能是由于不可靠或不存在的Internet连接造成的。您应该只有一个try / catch块来捕获这些并执行解决问题所需的任何步骤(可能要求用户检查其Internet连接)。

我猜这个欧洲版本有更多问题的原因是因为它在这里没有服务(假设你在美国工作)?