Part2-HttpClient官方教程-Chapter5-流利的API
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相关推荐
- python3 chm文档下载_python3.7.0官方参考文档 最新api文档 chm_Python教程_源雷技术空间...
资源名称:python3.7.0官方参考文档 最新api文档 chm 1.新语法特性: PEP 563, 推迟评估类型注释 2.向后不兼容语法更改: async 和 await 现在保留关键字 3.新 ...
- SolidWorks二次开发官方教程-API Fundamentals学习分享
今天618,送大礼! 间断的花了快两个月时间,终于把官方的API基础知识学习完了. 下面是链接和截图: API Fundamentals https://my.solidworks.com/train ...
- 【Flask】官方教程(Tutorial)-part2:蓝图-视图、模板、静态文件
前序文章: 官方教程(Tutorial)-part1:项目布局.应用程序设置.定义和访问数据库 蓝图-视图 视图函数是您为响应应用程序请求而编写的代码.Flask 使用模式将传入的请求 URL 与应该 ...
- 福利,PyTorch中文版官方教程来啦(附下载)
PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...
- PyTorch官方教程大更新:增加标签索引,更加新手友好
点击上方↑↑↑"视学算法"关注我 来源:公众号 量子位 授权 PyTorch官方教程,现已大幅更新: 提供标签索引,增加主题分类,更加新手友好. 不必再面对一整页教学文章茫然无措, ...
- PyTorch中文版官方教程来啦(附下载)
PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...
- PyTorch中文版官方教程来啦(附pdf下载)
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架 ...
- camvid数据集介绍_fastai 官方教程之查看数据
本文为fastai官方教程编译版本.若有错误,欢迎指正. 总目录: 查看数据:本节为初级教程,介绍怎样快速的查看你的数据和模型预测结果. 推理学习器(Inference Learner):本节为中级教 ...
- pytorch 加载模型_福利,PyTorch中文版官方教程来啦(附下载)
PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...
- vb如何定义微软服务器stul,VBScrip微软官方教程.doc
VBScrip微软官方教程 VBScript微软官方教程 Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它 ...
最新文章
- vue前端表格插件_Grid.js - 跨框架的前端表格插件
- JVM 参数及各部分含义(转)
- BZOJ-1951-古代猪文-SDOI2010-费马小定理+欧拉函数+lucas定理+中国剩余定理
- matlab 置顶曲线,matlab figure 最大,最小,置顶
- Linux系统语言教程,Linux操作系统基础及语言基础教程-麦可网张凌华
- 为什么微软账号被暂时停用_微软向Win10 20H2推出测试版更新KB4586853修复多种已知问题...
- 7.请解释泛型list集合的长度为什么动态的?_Java面试题集合篇一
- 浅析ERP软件企业资源的关系与发展
- 采用SVM和神经网络的车牌识别(流程图及详细解释)
- 2. COM编程——什么是接口
- python使用wxpy轻松实现微信防撤回
- 【阅读笔记】(语义分割最全总结,综述)《A Review on Deep Learning Techniques Applied to Semantic Segmentation》
- 全国各地电信网通铁通DNS服务器IP地址
- python+nodejs+vue自驾游旅游网站系统
- php怎么做注册短信验证码
- echarts 画中国地图
- Alist+KODI打造免费家庭影院
- python获取文件夹大小_S3 API for python–创建bucket文件夹统计文件夹大小
- 全球排名前四的眼药水,第一款来自欧洲老牌安瞧AGEPHA Pharma,眼科医生自留!
- Brat 标注工具 配置文件 详细说明