HttpComponents (http 客户端) 常用类简介

来源:互联网 发布:linux命令怎么改时区 编辑:程序博客网 时间:2024/05/06 02:19

http://hc.apache.org/
阿帕奇的开源项目。用于Http通信。
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.1</version></dependency>

1.client

org.apache.http.client.HttpClient
接口。
CloseableHttpClient org.apache.http.impl.client.HttpClients.createDefault()
此方法可以拿到HttpClient对象。它是线程安全的。

2.request

org.apache.http.HttpRequest
接口。实现类有HttpGet、HttpPost等。
org.apache.http.client.methods.HttpUriRequest
继承了HttpRequest接口的接口。
void org.apache.http.message.AbstractHttpMessage.addHeader(String name, String value)
添加请求的头部信息。
org.apache.http.client.methods.HttpGet
代表HttpGet请求。
org.apache.http.client.methods.HttpPost
代表HttpPost请求。

2.1 get请求

org.apache.http.client.methods.HttpGet.HttpGet(String uri)
HttpGet请求的构造函数。

2.2 post请求

org.apache.http.client.methods.HttpPost.HttpPost(String uri)
HttpPost请求的构造函数。
org.apache.http.entity.StringEntity.StringEntity(String string) 
http报文body的格式是字符串。用于构造json、xml类post请求。

3.设置参数

Builder org.apache.http.client.config.RequestConfig.custom()
拿到builder。
Builder org.apache.http.client.config.RequestConfig.Builder.setSocketTimeout(int socketTimeout)
设置socket链接超时。
Builder org.apache.http.client.config.RequestConfig.Builder.setConnectionTimeout(int connectionRequestTimeout)
设置http连接超时。socket超时是http超时的充分不必要条件。
Builder org.apache.http.client.config.RequestConfig.Builder.setConnectionRequestTimeout(int connectionRequestTimeout)
设置请求发出前的超时时间。适用于用连接池,连接池占满的情况。
RequestConfig org.apache.http.client.config.RequestConfig.Builder.build()
至此拿到了RequestConfig 对象。
void org.apache.http.client.methods.HttpRequestBase.setConfig(RequestConfigconfig)
设置连接超时等在内的参数。RequestConfig对象的生成见下行。
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(2000).build();

4.execute

CloseableHttpResponse org.apache.http.impl.client.CloseableHttpClient.execute(HttpUriRequest request) 
执行请求并返回结果,是同步函数,需要等待。

5.response

org.apache.http.client.methods.CloseableHttpResponse
接口。
StatusLine org.apache.http.HttpResponse.getStatusLine()
获取状态栏。
HttpEntity org.apache.http.HttpResponse.getEntity()
获取消息实体。
InputStream org.apache.http.HttpEntity.getContent()
获取内容。如果是文本数据,通常这样来拿。
Scanner scanner = new Scanner(instream, "utf-8");
void org.apache.http.util.EntityUtils.consume(HttpEntity entity) 
调用HttpEntity.getContent()就得到了InputStream,此方法用于把流消费完,然后关掉这个InputStream。

6.代码



1 0
原创粉丝点击