goo*_*odm 5 android timeout httpclient
嗨我已经问过这个问题了,但这次我检查一下这个方法是否允许所有证书都没有引起问题.
我开发了一个也在iPhone上的应用程序.问题是api请求.我为所有请求设置了超时.有时它发生在30-60秒之间.它看起来像应用程序确实耦合请求而不是打破,所有的时间超时,大约45秒后一切都好.
我不知道这是服务器问题还是android.
在使用IOS 5的iPhone上不会出现此问题,但在IOS 4上也不会出现此问题.
我检查了HttpClient,还检查了HttpsURLConnection.
连接是https,也是直接尝试IP地址.
所有请求都有相同的问题,所有请求都在异步任务中.
它们看起来都一样:
DefaultHttpClient client = new HttpSupport().getNewHttpClient();
client.getCredentialsProvider().setCredentials(new AuthScope(AuthScope.ANY_HOST,AuthScope.ANY_PORT),new UsernamePasswordCredentials(user, pass));
HttpGet httget = new HttpGet("xxxxxxxxxxxxxxxxxxxxxxx");
httget.setHeader("Accept", "application/json");
HttpResponse respond = null;
try
{
respond = client.execute(httget);
}
catch (ClientProtocolException e)
{
Log.e(TAG,"getEvents, ClientProtocolException");
}
catch (IOException e)
{
Log.e(TAG,"getEvents, IOException: " + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
我的HttpSupport类的代码是我的常见问题:Android - API请求
它可能是服务器故障?感谢您的任何帮助.
最近我注意到应用程序挂在client.execute上...尝试这样做:android httpclient挂起第二次请求到服务器(连接超时),但是没有帮助.也许不是api错,但Android就是这样.这个应用程序经常指向api,但是对于大多数请求,一切都很好.
仍然无法摆脱30-45秒的挂机.
今天我再次测试了应用程序,我发现错误只发生在三星平板电脑3.2上的Wi-Fi连接上.在野火与2.3.7(Wi-Fi和3g)一切似乎都没问题.我不是说移动设备上没有问题,但是在测试时我没有注意到超时.
您的客户端超时设置太短 - 在移动连接上,您预计最多需要 30 秒才能形成连接,超过 30 秒才能收到响应。
您的代码(通过您的链接):
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(params, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(params, timeoutSocket);
Run Code Online (Sandbox Code Playgroud)
它以毫秒为单位。所以你的连接超时是3秒,响应是5秒。
我会分别做 30000 和 60000。
另外,如果您想排除任何服务器问题,请安装像fiddler2这样的 HTTP 代理并使用它来显示每个 HTTP/HTTPS 请求,您将看到每个服务器响应。然后您将看到客户端或服务器是否行为不当。
| 归档时间: |
|
| 查看次数: |
3235 次 |
| 最近记录: |