1、HttpClient4.3和之前版本设置超时(set timeout)区别:
参考:http://my.oschina.net/u/577453/blog/173724
解析:如果不设置超时的话,可能会使得get的时间很久,造成程序假死(挂着不动不结束)
最近用到了HttpClient写微博爬虫,发现创建一个HttpClient对象吧,每一个版本的都不一样,
3.X是这样的
| 1 | HttpClient httpClient=newDefaultHttpClient(); | 
4.3是这样的
| 1 | CloseableHttpClient httpClient = HttpClients.createDefault(); | 
这些改动还不是很大,但是超时设置,HttpClient有三种超时设置,就改变不少了,讲一些最简单最易用的超时设置方法。
这是个3.X的超时设置方法
| 1 2 3 | HttpClient client = newHttpClient();client.setConnectionTimeout(30000);  client.setTimeout(30000); | 
| 1 2 | HttpClient httpClient= newHttpClient();  httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); | 
4.X版本的超时设置(4.3后已过时)
| 1 2 3 | HttpClient httpClient=newDefaultHttpClient();httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//连接时间httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,2000);//数据传输时间 | 
4.3版本超时设置
| 1 2 3 4 5 | CloseableHttpClient httpClient = HttpClients.createDefault();HttpGet httpGet=newHttpGet("http://www.baidu.com");//HTTP Get请求(POST雷同)RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//设置请求和传输超时时间httpGet.setConfig(requestConfig);httpClient.execute(httpGet);//执行请求 | 
更重要的是,4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时),亲身泪奔经历过啊!。
原文:http://www.cnblogs.com/DeeFOX/p/4015385.html