在测试应用程序时,我不断只在一台设备上出现错误: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。
答案 0 :(得分:1)
正如其他人所说,这可能是因为没有互联网连接造成的。
也许尝试添加请求重试处理程序,如此..
HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true);
httpClient.setHttpRequestRetryHandler(retryhandler);
这样一来,如果互联网熄火一秒钟,httpclient就可以处理它了。如果您有任何传输错误,Here apache也会建议您重试
通常,运输异常是非致命的,可以从中恢复 通过重试失败的方法。
所以我建议最好使用重试处理程序
答案 1 :(得分:0)
UnknownHostException可能是由于不可靠或不存在的Internet连接造成的。您应该只有一个try / catch块来捕获这些并执行解决问题所需的任何步骤(可能要求用户检查其Internet连接)。
我猜这个欧洲版本有更多问题的原因是因为它在这里没有服务(假设你在美国工作)?