5.1. 易于使用的Facade API

使用之前注意引入相应Jar包或者Maven依赖

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>fluent-hc</artifactId><version>4.5.5</version>
</dependency>

从4.2版开始,HttpClient基于流畅的界面概念提供了一个易于使用的Facade API。 Fluent Facade API只公开了HttpClient的最基本的功能,并且适用于不需要HttpClient的全部灵活性的简单用例。 例如,流畅的Facade API可以让用户不必处理连接管理和资源释放。
以下是通过HC fluent API执行的HTTP请求的几个示例

// 使用超时设置执行GET请求并将响应内容作为字符串返回。
//html包含百度首页的源代码,可能会出现乱码问题,设置编码格式即可。
String html = Request.Get("https://www.baidu.com/").connectTimeout(1000).socketTimeout(1000).execute().returnContent().asString();
// 通过包含请求主体的代理执行带自定义标题的POST请求
// 作为HTML表单并将结果保存到文件中
Request.Post("http://somehost/some-form").addHeader("X-Custom-header", "stuff").viaProxy(new HttpHost("myproxy", 8080)).bodyForm(Form.form().add("username", "vip").add("password", "secret").build()).execute().saveContent(new File("result.dump"));

也可以直接使用Executor来执行特定安全上下文中的请求,从而将身份验证细节缓存起来并重新用于后续请求。

Executor executor = Executor.newInstance().auth(new HttpHost("somehost"), "username", "password").auth(new HttpHost("myproxy", 8080), "username", "password").authPreemptive(new HttpHost("myproxy", 8080));executor.execute(Request.Get("http://somehost/")).returnContent().asString();executor.execute(Request.Post("http://somehost/do-stuff").useExpectContinue().bodyString("Important stuff", ContentType.DEFAULT_TEXT)).returnContent().asString();

5.1.1. 响应处理

流畅的Facade API通常使用户不必处理连接管理和资源释放。 但是在大多数情况下,这是以不得不缓冲内存中响应消息的内容为代价的。 强烈建议使用ResponseHandler进行HTTP响应处理,以避免在内存中缓冲内容。

Document result = Request.Get("http://somehost/content").execute().handleResponse(new ResponseHandler<Document>() {public Document handleResponse(final HttpResponse response) throws IOException {StatusLine statusLine = response.getStatusLine();HttpEntity entity = response.getEntity();if (statusLine.getStatusCode() >= 300) {throw new HttpResponseException(statusLine.getStatusCode(),statusLine.getReasonPhrase());}if (entity == null) {throw new ClientProtocolException("Response contains no content");}DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();try {DocumentBuilder docBuilder = dbfac.newDocumentBuilder();ContentType contentType = ContentType.getOrDefault(entity);if (!contentType.equals(ContentType.APPLICATION_XML)) {throw new ClientProtocolException("Unexpected content type:" +contentType);}String charset = contentType.getCharset();if (charset == null) {charset = HTTP.DEFAULT_CONTENT_CHARSET;}return docBuilder.parse(entity.getContent(), charset);} catch (ParserConfigurationException ex) {throw new IllegalStateException(ex);} catch (SAXException ex) {throw new ClientProtocolException("Malformed XML document", ex);}}});

转载于:https://www.cnblogs.com/snailclimb/p/9086446.html

Part2-HttpClient官方教程-Chapter5-流利的API相关推荐

  1. python3 chm文档下载_python3.7.0官方参考文档 最新api文档 chm_Python教程_源雷技术空间...

    资源名称:python3.7.0官方参考文档 最新api文档 chm 1.新语法特性: PEP 563, 推迟评估类型注释 2.向后不兼容语法更改: async 和 await 现在保留关键字 3.新 ...

  2. SolidWorks二次开发官方教程-API Fundamentals学习分享

    今天618,送大礼! 间断的花了快两个月时间,终于把官方的API基础知识学习完了. 下面是链接和截图: API Fundamentals https://my.solidworks.com/train ...

  3. 【Flask】官方教程(Tutorial)-part2:蓝图-视图、模板、静态文件

    前序文章: 官方教程(Tutorial)-part1:项目布局.应用程序设置.定义和访问数据库 蓝图-视图 视图函数是您为响应应用程序请求而编写的代码.Flask 使用模式将传入的请求 URL 与应该 ...

  4. 福利,PyTorch中文版官方教程来啦(附下载)

    PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...

  5. PyTorch官方教程大更新:增加标签索引,更加新手友好

    点击上方↑↑↑"视学算法"关注我 来源:公众号 量子位 授权 PyTorch官方教程,现已大幅更新: 提供标签索引,增加主题分类,更加新手友好. 不必再面对一整页教学文章茫然无措, ...

  6. PyTorch中文版官方教程来啦(附下载)

    PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...

  7. PyTorch中文版官方教程来啦(附pdf下载)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架 ...

  8. camvid数据集介绍_fastai 官方教程之查看数据

    本文为fastai官方教程编译版本.若有错误,欢迎指正. 总目录: 查看数据:本节为初级教程,介绍怎样快速的查看你的数据和模型预测结果. 推理学习器(Inference Learner):本节为中级教 ...

  9. pytorch 加载模型_福利,PyTorch中文版官方教程来啦(附下载)

    PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...

  10. vb如何定义微软服务器stul,VBScrip微软官方教程.doc

    VBScrip微软官方教程 VBScript微软官方教程 Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它 ...

最新文章

  1. vue前端表格插件_Grid.js - 跨框架的前端表格插件
  2. JVM 参数及各部分含义(转)
  3. BZOJ-1951-古代猪文-SDOI2010-费马小定理+欧拉函数+lucas定理+中国剩余定理
  4. matlab 置顶曲线,matlab figure 最大,最小,置顶
  5. Linux系统语言教程,Linux操作系统基础及语言基础教程-麦可网张凌华
  6. 为什么微软账号被暂时停用_微软向Win10 20H2推出测试版更新KB4586853修复多种已知问题...
  7. 7.请解释泛型list集合的长度为什么动态的?_Java面试题集合篇一
  8. 浅析ERP软件企业资源的关系与发展
  9. 采用SVM和神经网络的车牌识别(流程图及详细解释)
  10. 2. COM编程——什么是接口
  11. python使用wxpy轻松实现微信防撤回
  12. 【阅读笔记】(语义分割最全总结,综述)《A Review on Deep Learning Techniques Applied to Semantic Segmentation》
  13. 全国各地电信网通铁通DNS服务器IP地址
  14. python+nodejs+vue自驾游旅游网站系统
  15.  php怎么做注册短信验证码
  16. echarts 画中国地图
  17. Alist+KODI打造免费家庭影院
  18. python获取文件夹大小_S3 API for python–创建bucket文件夹统计文件夹大小
  19. 全球排名前四的眼药水,第一款来自欧洲老牌安瞧AGEPHA Pharma,眼科医生自留!
  20. Brat 标注工具 配置文件 详细说明

热门文章

  1. Python_骑士游历问题
  2. android des ecb加密_Android逆向 | 基础知识篇 01
  3. 基于Stm32F746g_disg平台下移植zephry使用TinyML预测模型
  4. [04-01]css组合选择器
  5. 【SQLSERVER】处理一对多标签的语法糖
  6. 重磅进展,Intel已能够生产量子芯片硅晶圆
  7. 一、Java语言基础(3)_流程语句——控制循环结构语句
  8. 常见的云计算安全问题
  9. JVM运行时的内存结构
  10. oracle 11g rac 环境(1)