美文网首页
httpclient4.5基本使用

httpclient4.5基本使用

作者: 野时光 | 来源:发表于2019-08-11 00:49 被阅读0次

使用示例

maven依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.5</version>
</dependency>

执行连接请求示例:

        // httpclient客户端,类似于一个浏览器,可以由这个客户端执行http请求
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 请求
        HttpGet httpGet = new HttpGet("https://www.jianshu.com/");
        // 响应
        CloseableHttpResponse response = null;
        try {
            // execute()执行成功会返回HttpResponse响应
            response = httpClient.execute(httpGet);
            // 响应体
            HttpEntity responseEntity = response.getEntity();
            System.out.println("响应状态:" + response.getStatusLine());
            // gzip,deflate,compress
            System.out.println("响应体编码方式:" + responseEntity.getContentEncoding());
            // 响应类型如text/html charset也有可能在ContentType中
            System.out.println("响应体类型:" + responseEntity.getContentType());
            /**
             *  EntityUtils.toString()方法会将响应体的输入流关闭,相当于消耗了响应体,
             *  此时连接会回到httpclient中的连接管理器的连接池中,如果下次访问的路由
             *  是一样的(如第一次访问https://www.jianshu.com/,第二次访问
             *  https://www.jianshu.com/search?q=java&page=1&type=note),
             *  则此连接可以被复用。
             */

            System.out.println("响应体内容:" + EntityUtils.toString(responseEntity));
            // 如果关闭了httpEntity的inputStream,httpEntity长度应该为0,而且再次请求相同路由的连接可以共用一个连接。
            // 可以通过设置连接管理器最大连接为1来验证。 
            response = httpClient.execute(httpGet);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null) {
                    // 关闭连接,则此次连接被丢弃
                    response.close();
                }
                httpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

创建默认的CloseableHttpClient实例中有一个连接管理器,最大连接数为20,每个路由最大连接数为2。因为有了连接管理器对连接的管理,我们可以放心的使用多线程来执行请求,可以有多个HttpClient(我觉得没有很大必要),但是必须将他们设置成同一个连接管理器,才能达到共用连接的目的。

参考文章:

Apache原文连接

原文翻译

相关文章

  • httpclient4.5基本使用

    使用示例 maven依赖: 执行连接请求示例: 创建默认的CloseableHttpClient实例中有一个连接管...

  • Java学习笔记 32 - 使用httpClient4.5创建连

    一、为什么要用Http连接池 1、降低连接时间的消耗:两个主机建立连接的过程中涉及到多个数据包的交换,Http连接...

  • HttpClient4.5 设置 Cookie

    操作方法就是使用 CookieStore , 如果服务器返回了cookie ,后面的请求会自动带上这个Cookie...

  • Flutter--Text/Container/Image

    Text基本使用 Container基本使用 Image基本使用

  • 基本使用

    1、 打开需要上传的文件夹执行: git init 格式化窗口 2、执行 git add . 上传文件 3、执行 ...

  • 基本使用

    href="javascript:;" 其中javascript: 是一个伪协议。它可以让我们通过一个链接来调用...

  • 基本使用

    数据库: 什么是数据库?简单来说就是存数据的。 都有什么是数据库? oracle(强大,跟金融政府打交道的,安全,...

  • 基本使用

    本文参考:https://morvanzhou.github.io/tutorials/machine-learn...

  • 6-xpath和css select基本使用

    Xpath基本使用 css select基本使用

  • MySQL语法入门(一)

    MySQL语法入门(一) 基本运算符使用 基本数学函数使用 基本字符串函数使用 基本日期时间函数使用

网友评论

      本文标题:httpclient4.5基本使用

      本文链接:https://www.haomeiwen.com/subject/trxjjctx.html