博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CloseableHttpClient与 CloseableHttpResponse应用
阅读量:5154 次
发布时间:2019-06-13

本文共 2267 字,大约阅读时间需要 7 分钟。

最近在使用Apache的httpclient的时候,maven引用了最新版本4.3,发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了,之前在使用4.2.3版本的时候,还没有被deprecated。去看了下官方文档,确实不推荐使用了,。

  • DefaultHttpClient —> CloseableHttpClient
  • HttpResponse —> CloseableHttpResponse

官方给出了新api的样例,如下。

Get方法:

CloseableHttpClient httpclient = HttpClients.createDefault();    HttpGet httpGet = new HttpGet("http://targethost/homepage");    CloseableHttpResponse response1 = httpclient.execute(httpGet);    // The underlying HTTP connection is still held by the response object    // to allow the response content to be streamed directly from the network socket.    // In order to ensure correct deallocation of system resources    // the user MUST either fully consume the response content  or abort request    // execution by calling CloseableHttpResponse#close().    //建立的http连接,仍旧被response1保持着,允许我们从网络socket中获取返回的数据    //为了释放资源,我们必须手动消耗掉response1或者取消连接(使用CloseableHttpResponse类的close方法)    try {        System.out.println(response1.getStatusLine());        HttpEntity entity1 = response1.getEntity();        // do something useful with the response body        // and ensure it is fully consumed        EntityUtils.consume(entity1);    } finally {        response1.close();    }

 

Post方法:

HttpPost httpPost = new HttpPost("http://targethost/login");    //拼接参数    List 
nvps = new ArrayList
(); nvps.add(new BasicNameValuePair("username", "vip")); nvps.add(new BasicNameValuePair("password", "secret")); httpPost.setEntity(new UrlEncodedFormEntity(nvps)); CloseableHttpResponse response2 = httpclient.execute(httpPost); try { System.out.println(response2.getStatusLine()); HttpEntity entity2 = response2.getEntity(); // do something useful with the response body // and ensure it is fully consumed //消耗掉response EntityUtils.consume(entity2); } finally { response2.close(); }
再往下看HttpClients的源码,具体的实现都在HttpClientBuilder的build方法中,有兴趣的可以去apache看源码。
/**    * Creates {
@link CloseableHttpClient} instance with default * configuration. */ public static CloseableHttpClient createDefault() { return HttpClientBuilder.create().build(); }

 

参考:http://www.yeetrack.com/?p=760

 

转载于:https://www.cnblogs.com/unknows/p/8567170.html

你可能感兴趣的文章
CreateUserWizard控件的详细使用说明(4)
查看>>
养动物
查看>>
批处理/DOS命令删除文件夹下某类型的文件
查看>>
模板 - 数学 - 矩阵快速幂
查看>>
优秀的持久层框架Mybatis,连接数据库快人一步
查看>>
线段树 延迟更新
查看>>
CentOS的IP配置专题
查看>>
基于WCF大型分布式系统的架构设计
查看>>
性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据
查看>>
Cisco & H3C 交换机 DHCP 中继
查看>>
人脸识别技术及应用,二次开发了解一下
查看>>
理解CSS中的BFC(块级可视化上下文)[译]
查看>>
身份证号码的合法性校验
查看>>
Python基础--通用序列操作
查看>>
[CERC2017]Intrinsic Interval[scc+线段树优化建图]
查看>>
DevExpress DXperience Universal 11.1.6 下载+源码+编译+汉化流程+升级+替换强名
查看>>
每天一个linux命令(25):linux文件属性详解
查看>>
【XLL API 函数】xlSheetId
查看>>
架构之路(六):把框架拉出来
查看>>
Linux:Apache2.4以上配置默認路徑
查看>>