美文网首页
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基本使用

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