org.apache.httpcomponents httpclient 4.5.1
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 org.apache.http.client.config.RequestConfig.Builder.
setSocketTimeout(int socketTimeout)
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()
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.代码