zoukankan      html  css  js  c++  java
  • HttpClient 操作总结

    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小时),亲身泪奔经历过啊!。

  • 相关阅读:
    LR11
    安装Nginx+uWSGI+Django环境
    MYSQL 安装更新,使用,管理,备份和安全等
    oracle里要查看一条sql的执行情况,有没有走到索引,怎么看?索引不能提高效率?
    大神:python怎么爬取js的页面
    Sublime 编译出来的是 dos格式,不是unix格式
    前天搞了一天?昨天搞了一天?今天搞了半小时
    搞了一宿,弄完了一个POP3协议
    我竟然。。。傻了近一年
    跨进程信息交互真个费事。
  • 原文地址:https://www.cnblogs.com/DeeFOX/p/4015385.html
Copyright © 2011-2022 走看看