2013-08-05 82 views
1

在我的应用程序中,我正在从ReST Web服务下载JSON数据。大多数时候,这个工作正常,但有时连接会超时。如何处理HTTP超时?

这是我用来设置超时代码...

HttpConnectionParams.setConnectionTimeout(httpParameters, 20000); 
HttpConnectionParams.setSoTimeout(httpParameters, 42000); 

如果连接超时,应用程序崩溃和关闭,如何处理超时?

+0

简单的把'try-catch'块并捕获TimeOut。 – user370305

+0

连接超时抛出“java.net.SocketTimeoutException:套接字未连接”,套接字超时“java.net.SocketTimeoutException:操作超时”。所以请尝试赶上 –

+0

你需要接受虚拟机的答案这是他的想法。 –

回答

4

HttpClient的类会引发ConnectTimeoutException异常,所以你应该听吧:

try { 
     HttpResponse response = client.execute(post); 
        // do something with response 
    } catch (ConnectTimeoutException e) { 
     Log.e(TAG, "Timeout", e); 
    } catch (SocketTimeoutException e) { 
     Log.e(TAG, " Socket timeout", e); 
    } 
+0

我试图捕捉这个异常,但它不起作用。 –

+0

修正它以捕获两者。 – VM4

1

增加你的等待就像响应时间:

HttpConnectionParams.setConnectionTimeout(httpParameters, 60000); //1 minute 
HttpConnectionParams.setSoTimeout(httpParameters, 90000); // 1.5 minute 
0

我曾试图抓住各种异常类型,我发现捕获IOException异常工作,因为我想!

+2

这是因为SocketTimeoutException是IOException的子类型。 :) – VM4

+0

@VM啊好吧。谢谢,知道的非常有用 –