处理HttpClient(Httpget)超时

A_E*_*ric 1 java httpclient apache-httpclient-4.x

所以我正在运行一个多线程程序,它会对api和一些想要抓取的网页进行大量调用.在一些不寻常的情况下,httpget将失败并导致程序"冻结"(线程永不退出,线程池永不关闭,主要永不退出等)

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

DefaultHttpClient httpclient = new DefaultHttpClient();
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮我解决这些问题,或者至少指出我应该寻找处理超时的地方吗?(Apache似乎有很好的库,似乎从来没有好的例子)

小智 6

尝试如下所示的内容.

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);
Run Code Online (Sandbox Code Playgroud)