因此,我正在运行一个多线程程序,该程序对api和它想要抓取的一些网页进行了大量调用。在某些不常见的情况下,httpget会严重失败并导致程序“冻结”(线程永不退出,线程池永不关闭,主线程永不退出,等等)。

我需要为正在建立的http连接设置超时。我正在使用DefaultHttpClient

DefaultHttpClient httpclient = new DefaultHttpClient();


而且我没有设置任何参数。

有人可以帮我超时吗,或者至少可以指出我应该在哪里处理超时? (Apache似乎有很棒的库,似乎从来没有很好的例子)

最佳答案

尝试如下所示的方法。

int connectiontimeout = 1000; //1 second
int sockettimeout = 1000;

HttpParams httpparameters = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpparameters, connectiontimeout);
HttpConnectionParams.setSoTimeout(httpparameters, sockettimeout);

HttpClient httpclient = new DefaultHttpClient(httpparameters);

10-06 08:34