码迷,mamicode.com
首页 > 其他好文 > 详细

HttpClient 操作总结

时间:2014-10-10 14:48:34      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   os   ar   java   数据   sp   

1、HttpClient4.3和之前版本设置超时(set timeout)区别:

  参考:http://my.oschina.net/u/577453/blog/173724

  解析:如果不设置超时的话,可能会使得get的时间很久,造成程序假死(挂着不动不结束)

  最近用到了HttpClient写微博爬虫,发现创建一个HttpClient对象吧,每一个版本的都不一样,

  3.X是这样的

1
HttpClient httpClient=new DefaultHttpClient();

  4.3是这样的

1
CloseableHttpClient httpClient = HttpClients.createDefault();

  这些改动还不是很大,但是超时设置,HttpClient有三种超时设置,就改变不少了,讲一些最简单最易用的超时设置方法。

  这是个3.X的超时设置方法  

1
2
3
HttpClient client = new HttpClient();
client.setConnectionTimeout(30000); 
client.setTimeout(30000);
  
1
2
HttpClient httpClient= new HttpClient(); 
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

  4.X版本的超时设置(4.3后已过时)

1
2
3
HttpClient httpClient=new DefaultHttpClient();
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=new HttpGet("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小时),亲身泪奔经历过啊!。

HttpClient 操作总结

标签:style   blog   http   io   os   ar   java   数据   sp   

原文地址:http://www.cnblogs.com/DeeFOX/p/4015385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!