Httpclient4 简介
1. 简介
httpclent是java中一个关于http协议的程序包 ,主要适用于java模拟浏览器使用HTTP协议进行通信,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。Http协议是互联网中一个使用最广泛的一个协议。
2. 组成
主要使用有三个部分组成。
- httpcomponents core,主要是由一些低层次的组件构成,实现了Http协议的底层框架,可以用来构成客户端和服务端的http服务。支持阻塞和非阻塞I/O,同时支持java中NIO。
- httpcomponents client,是基于core模块构建的http agent,提供一些高级的http服务。
- httpcomponents asyncclient,是基于core中NIO方式实现的,用来支持大量并
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("http://localhost/");
CloseableHttpResponse response = httpclient.execute(httpget);
try {<...>
} finally {response.close();
}
3. http 请求(request)
<request-line>
<headers>
<blank line>
[<request-body>]
在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]。
在HTTP中,定义了多种请求类型,通常我们关心的只有GET请求和POST请求。只要在Web浏览器上输入一个URL,浏览器就将基于该URL向服务器发送一个GET请求,以告诉服务器获取并返回什么资源。
HttpRequest request = new BasicHttpRequest("GET", "/",HttpVersion.HTTP_1_1);
System.out.println(request.getRequestLine().getMethod());
System.out.println(request.getRequestLine().getUri());
System.out.println(request.getProtocolVersion());
System.out.println(request.getRequestLine().toString());
GET
/
HTTP/1.1
GET / HTTP/1.1
HttpGet httpget = new HttpGet("http://www.google.com/search?hl=en&q=httpclient&btnG=Google+Search&aq=f&oq=");
Httpclent提供一个URIBuilder类用来构建一些需要请求的URI;如:
URI uri = new URIBuilder().setScheme("http").setHost("www.google.com").setPath("/search").setParameter("q", "httpclient").setParameter("btnG", "Google Search").setParameter("aq", "f").setParameter("oq", "").build();
HttpGet httpget = new HttpGet(uri);
4. http 响应(Response)
如下所示,HTTP响应的格式与请求的格式十分类似 , 在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。:
<status-line>
<headers>
<blank line>
[<response-body>]
可以用BasicHttpResponse构建一个响应。
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1,
HttpStatus.SC_OK, "OK");
System.out.println(response.getProtocolVersion());
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(response.getStatusLine().getReasonPhrase());
System.out.println(response.getStatusLine().toString());
输出:
HTTP/1.1
200
OK
HTTP/1.1 200 OK
Httpclient4 简介相关推荐
- HiveServer2服务简介
HiveServer2服务简介 HiveServer2 基本概念介绍 hiveserver2的搭建使用 独立hiveserver2模式 共享metastore server的hiveserver2模式 ...
- ElasticSearch简介及ElasticSearch部署、原理和使用介绍
ElasticSearch简介及ElasticSearch部署.原理和使用介绍 第一章:elasticsearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式 ...
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Docker学习(一)-----Docker简介与安装
一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- TensorRT简介
TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...
- 谷粒商城学习笔记——第一期:项目简介
一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...
- 通俗易懂的Go协程的引入及GMP模型简介
本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...
- Linux 交叉编译简介
Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...
- TVM Operator Inventory (TOPI)简介
TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...
最新文章
- 他十年前的书在前端圈人手一本,豆瓣评分9.1。现在,王者归来了!
- 软件测试风险评估分析
- ASP.NET 学习笔记_13 viewstate 和 cache
- 【配置】固定资产组织结构配置
- (Call Stack)
- 最新的ndkr20编译c_NDKr20使用clang编译ffmpeg
- linux cpu 个数、核心数、线程数
- 计算机网络:数据链路层(2):MAC协议
- 手提计算机10发现不到打印机,笔记本电脑搜索不到打印机怎么样解决
- python实现DES加密解密
- 第十六周助教心得体会
- 【工作感悟】在一家普通互联网公司实习四个月的总结和感想
- java类名不能以数字开头_java变量为什么不能以数字开头
- windows设置CPU主频
- 满城尽带黄金“假”(二)——断臂殇为谁而鸣
- Windows10家庭版 打不开组策略
- 诺基亚智能手机未来仅采用Symbian和MeeGo系统
- 笑死!程序员延寿指南开源了
- 【LoRa网关以及LoRa自组网】以“有人物联网”为例
- 如何下载广西壮族自治区卫星地图高清版大图