1.概述

这个食谱显示如何使用Apache HttpClient 4在各种例子和用例中。

重点是HttpClient 4.3。x和上面,因此一些示例可能不能与旧版本的API一起工作。

烹饪书的格式是注重示例和实用的-没有多余的细节和解释的必要。

如果你想更深入地研究并学习其他可以用HttpClient做的很酷的事情,请转到HttpClient的主要教程

2.食谱

创建http客户端

CloseableHttpClient client = HttpClientBuilder.create().build();

发送基本GET请求

实例。执行(新HttpGet (" http://www.google.com "));

获取HTTP响应的状态码

CloseableHttpResponse response = instance。执行(新HttpGet (" http://www.google.com "));为了(response.getStatusLine () .getStatusCode(),等于(200);

获取响应的媒体类型

CloseableHttpResponse response = instance。执行(新HttpGet (" http://www.google.com "));String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType();为了(contentMimeType等于(ContentType.TEXT_HTML.getMimeType ()));

获取响应的主体

CloseableHttpResponse response = instance。执行(新HttpGet (" http://www.google.com "));String bodyAsString = EntityUtils.toString(response.getEntity());为了(bodyAsString notNullValue ());

配置请求的超时时间

@Test(expected = SocketTimeoutException.class) public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws ClientProtocolException, IOException {RequestConfig RequestConfig = RequestConfig.custom() .setConnectionRequestTimeout(1000).setConnectTimeout(1000) .build();HttpGet request = new HttpGet(SAMPLE_URL);request.setConfig (requestConfig);instance.execute(请求);}

在整个客户端上配置超时

RequestConfig = RequestConfig.custom()。setConnectionRequestTimeout (1000) .setConnectTimeout (1000) .setSocketTimeout (1000) .build ();HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig);

发送一个POST请求

实例。执行(新HttpPost (SAMPLE_URL));

向请求添加参数

List params = new ArrayList();参数个数。添加(新BasicNameValuePair(“key1”、“value1”));参数个数。添加(新BasicNameValuePair(“key2”、“value2”));请求。setEntity(新UrlEncodedFormEntity (params, Consts.UTF_8));

配置HTTP请求的重定向处理方式

CloseableHttpClient实例= HttpClientBuilder.create().disableRedirectHandling().build();CloseableHttpResponse response = instance。执行(新HttpGet (" http://t.co/I5YYd9tddw "));为了(response.getStatusLine () .getStatusCode(),等于(301);

配置请求头

HttpGet request = new HttpGet(SAMPLE_URL);request.addHeader (HttpHeaders。接受,“application / xml”);响应= instance.execute(请求);

从响应中获取报头

CloseableHttpResponse response = instance。执行(新HttpGet (SAMPLE_URL));Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);为了(标题,而不是(emptyArray ()));

关闭/释放资源

响应=实例。执行(新HttpGet (SAMPLE_URL));try {HttpEntity entity = response.getEntity();if (entity != null) {InputStream stream = entity. getcontent ();instream.close ();}} finally {response.close();}

3.深入了解HttpClient

如果正确使用的话,HttpClient库是一个非常强大的工具——如果你想启动的话探索客户能做什么-检查一些教程:

你也可以深入研究HttpClient通过探索整个系列

4.结论

这种格式和我通常的文章结构有点不同我要出版一些我的内部开发食谱关于一个给定的话题-关于谷歌番石榴,Hamcrest5-现在是HttpClient。我们的目标是让这些信息在网上随处可见——并且每当我遇到一个新的有用的例子时就把它添加进去。

所有这些示例和代码片段的实现可以在在GitHub

这是一个基于Maven的项目,因此它应该很容易导入和运行。

通用的底部

通过。开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程
2评论
最古老的
最新的
内联反馈
查看所有评论
本文评论关闭!