1

在测试应用程序时,我不断收到仅在一台设备上偶尔出现的错误:GT-I9100(欧洲)三星 Galaxy S II。这些错误不会发生在任何其他设备上,甚至 SPH-D710 (Sprint) 三星 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);

  ... ...

三星 Galaxy S II 是否有任何可能导致此问题的怪癖?它运行的是 Android 2.3.6。

4

2 回答 2

1

正如其他人所说,这可能是由不存在的互联网连接引起的。

也许尝试像这样添加请求重试处理程序..

    HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true);

    httpClient.setHttpRequestRetryHandler(retryhandler);

这样,如果互联网瞬间中断,httpclient 可以处理它。如果您有任何传输错误,这里apache 还建议重试

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

所以我建议无论如何使用重试处理程序是一个好习惯

于 2012-06-14T16:02:11.857 回答
0

UnknownHostException 可能由不可靠或不存在的 Internet 连接引起。你应该有一个 try/catch 块来捕获这些并执行任何必要的步骤来解决问题(也许要求用户检查他们的互联网连接)。

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

于 2012-06-14T15:50:28.873 回答