Android - 定期发生HttpClient超时

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)一切似乎都没问题.我不是说移动设备上没有问题,但是在测试时我没有注意到超时.

pet*_*ept 4

您的客户端超时设置太短 - 在移动连接上,您预计最多需要 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 请求,您将看到每个服务器响应。然后您将看到客户端或服务器是否行为不当。