在Android上,HttpClient超时对我不起作用

时间:2014-01-03 17:57:14

标签: java android eclipse timeout apache-httpclient-4.x

我正在尝试从我的Android应用程序到一台PC上的C#应用​​程序执行httpget。通信本身工作正常,但是当C#应用程序不可用时,android端的请求需要很长时间才能超时,我希望能够调整。

我已经在stackoverflow上找到了一些处理这个问题的答案,比如How to set HttpResponse timeout for Android in Java

正如您在下面的代码中所看到的,我已经实现了建议的解决方案:

        HttpParams httpParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, 3000);
        HttpConnectionParams.setSoTimeout(httpParams, 5000);
        HttpClient httpClient = new DefaultHttpClient(httpParams);

        // Not sure whether the HttpContext is necessary
        //HttpContext localContext = new BasicHttpContext();

        HttpGet httpGet = new HttpGet("http://mydnsname:myport/etc");
        String text = null;
        try 
        {
            HttpResponse response = httpClient.execute(httpGet);

            HttpEntity entity = response.getEntity();

            text = getASCIIContentFromEntity(entity);
        } 
        catch (Exception e) 
        {
            text = e.getLocalizedMessage();
        }

然而,当使用这个解决方案时,超时仍然需要大约25-35秒,之后我得到一个ConnectTimeoutException,文本是“连接到/ my-ip:myport超时”。

任何人都可以帮我弄清楚为什么5秒或3秒的设定超时不起作用?

仅供参考:我使用的是org.apache.http.client.HttpClient,此代码位于AsyncTask中。

提前感谢您的帮助。

0 个答案:

没有答案