1. HttpClient 简介

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2. Java 中使用方法

2.1 创建实例

官方推荐方法是创建 CloseableHttpClient 类

CloseableHttpClient httpclient = HttpClients.createDefault();

2.2 创建请求实例

// 创建 GET 请求实例
HttpGet httpGet = new HttpGet("http://127.0.0.1/test");
// 创建 POST 请求实例
HttpPost httpPost = new HttpPost("http://127.0.0.1/test2");

2.3 添加请求头

httpPost.addHeader("Content-Type", "application/form-data");

2.4 设置配置

httpPost.setConfig(RequestConfig.custom().setConnectTimeout(100).build());

2.5 添加实体

2.5.1 传递 Json 类型的字符串

httpPost.setEntity(new StringEntity("{\"name\":\"Martin\"}", "UTF-8"));

2.5.2 传递 form 表单

使用 BasicNameValuePair 封装 key - value,并添加到 List 集合中

List<BasicNameValuePair> basicNameValuePairs =new ArrayList<>();
basicNameValuePairs.add(new BasicNameValuePair("name", "Martin"));
basicNameValuePairs.add(new BasicNameValuePair("age", "10"));
basicNameValuePairs.add(new BasicNameValuePair("sex", "male"));
httpPost.setEntity(new UrlEncodedFormEntity(basicNameValuePairs, "UTF-8"));

2.5.3 传递 Multipart/form-data 类型的数据

// 创建 MultipartEntityBuilder
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
// 设置字符编码
ContentType contentType=ContentType.create("text/plain", Charset.forName("UTF-8"));
// 添加文本内容
entityBuilder.addPart("id", new StringBody("value",contentType));
// 添加文件
// 以二进制的形式添加数据,可以添加File、InputStream、byte[]类型的数据。
entityBuilder.addBinaryBody("fileName1", new File("test.txt"));
// 以Key/Value的形式添加ContentBody类型的数据
entityBuilder.addPart("fileName2", new FileBody(new File("test.txt")));
// 设置实体
httpPost.setEntity(entityBuilder.build());

2.6 发送请求

// 发送请求
HttpResponse httpResponse = httpclient.execute(httpPost);

2.7 释放连接

finally {httpPost.releaseConnection();
}

站在前人的肩膀上前行,感谢以下博客及文献的支持。

  • Httpclient 表单,json,multipart/form-data 提交 —总结常用的方法

HttpClient Java 常用写法总结相关推荐

  1. Java常用类库以及简介,具体使用细节进行百度(爬虫爬取的数据)

    来至于互联网 Office文档的Java处理包 POI [推荐] Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: ...

  2. javascript与java正则表达式写法的区别

    Js验证写法:(转义符\) var str = "待验证文本"; var regular = new RegExp(/这里是正则表达式/); if (regular.test(st ...

  3. java和js的正则表达式一样吗_JavaScript与Java正则表达式写法的区别

    JavaScript验证写法:(转义符\) var str = "待验证文本"; var regular = new RegExp(/这里是正则表达式/); if (regular ...

  4. Spring切点表达式常用写法

    任意公共方法的执行: execution(public * *(..)) 任何一个名字以 set 开始的方法的执行: execution(* set*(..)) AccountService 接口定义 ...

  5. java测试开发_测试开发系类之Java常用知识点

    测试需要的两门语言:Java,Python 测试开发:开发测试脚本->开发测试框架 Java需要掌握内容:基础语法.Java面向对象相关概念.Java常用类.基础测试框架 Java常用类:IO相 ...

  6. Spring切入点表达式常用写法

    Spring切入点表达式常用写法 自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异. 下面给出一些常见示例 ...

  7. httpclient java 过时_当年用httpclient时踩过的那些坑

    前言 httpclient是java开发中最常用的工具之一,通常大家会使用httpcilent去调用远程,使用其中比较基础的api,长期开发爬虫,会接触httpclient不常用的api,同时会遇到各 ...

  8. java apache commons_Apache commons(Java常用工具包)简介

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html Be ...

  9. 【Java入门基础第10天】Java常用的转义字符

    Java常用的转义字符 1.\t:一个制表位,实现对齐功能 2.\n:换行符 3.\\:转义字符 一个 4.\":一个" 5.\':一个' 6.\r:一个回车 System.out ...

  10. Java 常用数据类型的输入输出

    C语言学习完转到Java后,第一个感觉就是Java的写法很复杂,同时,在常用的数据类型的输入输出上也没有C语言那么方便.在C语言上面,用 scanf 函数可以很方便的输入大多数格式,在Java上却不行 ...

最新文章

  1. 带参数的方法;导入包
  2. css行高line-height的一些深入理解及应用
  3. 滨州行谋定乡音叙乡情-农业大健康·万祥军:考察特色产业
  4. 信息系统项目管理师-信息化与信息系统考点笔记(上)
  5. 使用Curator和ZooKeeper发现Hazelcast成员
  6. 投篮c语言程序设计,教师招聘笔试体育之篮球必做20题(一)
  7. mysql介质故障_pciessd异常readonly致mysql反复crash
  8. 前端开发的工具,库和资源总结
  9. mysql 字段内容大小写_mysql查询字段内容无法区分大小写问题
  10. U大师U盘启动盘制作工具(V1.1.0版)——升级U盘
  11. navicat报错SSH:Unable to load key
  12. 涂料价格上涨原因剖析
  13. Android 深入理解AIL语言与init.rc文件
  14. 【雅思大作文考官范文】——第十六篇:climate change essay
  15. 男朋友该对女生说的23句话(转)
  16. leetcode零散题汇总
  17. tp5原生SQL:读操作(query方法)
  18. 电路与电子线路实验一万用表的设计与仿真——北京理工大学
  19. 持续信创| 骞云科技与东方通完成产品兼容性互认证
  20. Xmind2021分享

热门文章

  1. [Bilingual]Klein四元群的四个例子Four examples of Klein four-group
  2. Qt与flash交互实现(播放Flash动画)
  3. 数据预处理_缺失值处理
  4. C# Activator.CreateInstance()方法使用
  5. matlab中e如何输入,Matlab中表达e的操作方法介绍
  6. 在matlab编辑大于号,教你怎么用MathType编辑大于或小于符号
  7. latex补集怎么打
  8. 太阳系八大行星直径、质量、与太阳距离参数
  9. 洛谷 P3987 我永远喜欢珂朵莉~(Splay+BIT+无限卡常)
  10. Pivotal 任命Lionel Lim为Pivotal公司副总裁兼亚太区常务董事