1、创建HTTP客户端

[java] view plaincopyprint?
  1. CloseableHttpClient client = HttpClientBuilder.create().build();

2、发送基本的GET请求

[java] view plaincopyprint?
  1. instance.execute(new HttpGet(“http://www.baidu.com”));

3、获取HTTP响应的状态码

[java] view plaincopyprint?
  1. String url = “http://www.baidu.com”;
  2. CloseableHttpResponse response = instance.execute(new HttpGet(url));
  3. assertThat(response.getStatusLine().getStatusCode(), equalTo(200));

4、获取响应的媒体类型

[java] view plaincopyprint?
  1. String url = “http://www.baidu.com”;
  2. CloseableHttpResponse response = instance.execute(new HttpGet(url));
  3. String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType();
  4. assertThat(contentMimeType, equalTo(ContentType.TEXT_HTML.getMimeType()));

5、获取响应的BODY部分

[java] view plaincopyprint?
  1. String url = “http://www.baidu.com”;
  2. CloseableHttpResponse response = instance.execute(new HttpGet(url));
  3. String bodyAsString = EntityUtils.toString(response.getEntity());
  4. assertThat(bodyAsString, notNullValue());

6、配置请求的超时设置

[java] view plaincopyprint?
  1. @Test(expected=SocketTimeoutException.class)
  2. public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws ClientProtocolException, IOException{
  3. RequestConfig requestConfig = RequestConfig.custom()
  4. .setConnectionRequestTimeout(50).setConnectTimeout(50)
  5. .setSocketTimeout(50).build();
  6. HttpGet request = new HttpGet(SAMPLE_URL);
  7. request.setConfig(requestConfig);
  8. instance.execute(request);
  9. }

7、发送POST请求

[java] view plaincopyprint?
  1. instance.execute(new HttpPost(SAMPLE_URL));

8、为HTTP请求配置重定向

[java] view plaincopyprint?
  1. CloseableHttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build();
  2. CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL));
  3. assertThat(reponse.getStatusLine().getStatusCode(), equalTo(301));

9、配置请求的HEADER部分

[java] view plaincopyprint?
  1. HttpGet request = new HttpGet(SAMPLE_URL);
  2. request.addHeader(HttpHeaders.ACCEPT, “application/xml”);
  3. response = instance.execute(request);

10、获取响应的HEADER部分

[java] view plaincopyprint?
  1. CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL));
  2. Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);
  3. assertThat(headers, not(emptyArray()));

11、关闭或释放资源

[java] view plaincopyprint?
  1. response = instance.execute(new HttpGet(SAMPLE_URL));
  2. try{
  3. HttpEntity entity = response.getEntity();
  4. if(entity!=null){
  5. InputStream instream = entity.getContent();
  6. instream.close();
  7. }
  8. } finally{
  9. response.close();
  10. }

12 URI构造器

            URI uri = new URIBuilder().setScheme("http").setHost("www.baidu.com").setPath("wenku").setParameter("name", "xiyouji").setParameter("author", "wuchengen").build();System.out.println(uri);   // 结果为http://www.baidu.comwenku?name=xiyouji&author=wuchengen

13 FORM参数

        List<NameValuePair> formParamList = new ArrayList<NameValuePair>();formParamList.add(new BasicNameValuePair("name", "zhangsan"));formParamList.add(new BasicNameValuePair("age", "20"));UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(formParamList);HttpPost post = new HttpPost();post.setEntity(formEntity);

14 String消息体

        StringEntity stringEntity = new StringEntity("{\"name\":\"fabregas\"}");StringEntity stringEntity2 = new StringEntity("{\"name\":\"fabregas\"}", ContentType.APPLICATION_JSON);StringEntity stringEntity3 = new StringEntity("{\"name\":\"fabregas\"}", Consts.UTF_8);StringEntity stringEntity4 = new StringEntity("{\"name\":\"fabregas\"}", ContentType.create("application/json", "UTF-8"));StringEntity stringEntity5 = new StringEntity("{\"name\":\"fabregas\"}", ContentType.APPLICATION_JSON.withCharset(Consts.UTF_8));

15 连接池

        PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();connManager.setMaxTotal(200);connManager.setDefaultMaxPerRoute(10);CloseableHttpClient client = HttpClients.custom().setConnectionManager(connManager).build();



【HttpClient4】 基本操作相关推荐

  1. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)

    我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作:​ 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...

  2. pytorch方法,Tensor及其基本操作_重点

    由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...

  3. Gradle安装使用以及基本操作

    转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...

  4. c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...

    各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...

  5. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  6. 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句

    一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...

  7. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  8. OpenCV-Java版学习(3.对视频的基本操作)

    前言 上一节我们学习了使用OpenCV对图像进行一些基础操作,现在我们学习对视频进行一些基础的操作. 对视频的基本操作 从相机中读取视频 我们从电脑自带的摄像头捕捉一段视频并在屏幕上显示出来,代码如下 ...

  9. JDBC编程:2(数据库的基本操作)

    数据库的基本操作 查询数据 在开始前先简单地介绍一下什么是静态SQL和动态SQL: 静态SQL,在编译阶段就可以确定数据库要做什么事情.在某种高级语言中,如果嵌入了SQL语句,而这个SQL语句的主体结 ...

最新文章

  1. Linux下如何查看系统启动时间和运行时间(转)
  2. Java程序结合Aapche Ant进行远程服务器文件备份
  3. (一)为什么你应该(从现在开始就)写博客
  4. 个人工作总结09(第二阶段)
  5. JVM - Class常量池 || 运行时常量池
  6. Android深度探索第五章
  7. python matplotlib.figure.Figure.add_subplot()方法的使用
  8. 删除二叉搜索树中的节点
  9. Html5画布(canvas)实例之绘制矩形
  10. 查找出系统中大于50k 且小于100k 的文件并删除。
  11. C# DateTime.Compare判断两个DateTime 日期是否相等
  12. lol英雄联盟符文助手源码/一键应用符文
  13. Oracle 和Mysql Group by的细节与坑
  14. Java语言基础-反射机制、正则表达式
  15. 2021年胡润中国百富榜研究报告
  16. GBase 8c的运行环境
  17. 风袖使用RocketMQ实现订单状态转变
  18. 自己动手写Spring-1-简单的IOC实现
  19. 腾讯云服务器修改和重置登录密码图文教程
  20. 自我复盘-20210820

热门文章

  1. 关于ArcGIS的使用以及 项目:将点云数据转为TIN显示
  2. jpg转换成pdf应该怎么做
  3. type在python中的用法_Python type的使用
  4. 内容无错误,但运行不出来
  5. G盘参数错误,要如何找回资料
  6. PHP foreach循环语句
  7. 用python实现0到9之间10个数字排列不重复的个数
  8. ftp上传显示服务器错误,FTP文件夹错误:打开FTP服务器上的文件夹时发生错误
  9. 多个if语句和else if有什么区别?
  10. Java如何把字符串转化为输入流