因此,我正在运行一个多线程程序,该程序对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);