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. react native引入第三方库
  3. 在子线程中弹土司的一段代码
  4. java 使用gdal_java-gdal实现shp转geojson
  5. Windows操作系统下查看日志
  6. 【django】配置前端静态文件【6】
  7. Tech Websites
  8. Node — 第四天(Promise与路由)
  9. poj2750 PottedFlower(线段树的环状操作)
  10. lnmp环境配置laravel项目白屏问题
  11. 缩放图片,解决bitmap 内存溢出out of memory的问题
  12. 学数值计算可以从事计算机算法吗,数值计算方法
  13. Java学习笔记之设计模式(7)单例模式
  14. Qt创建ui界面/界面关联类和LNK2001
  15. c#类似跑马灯抽签小程序
  16. 完美解决Mac无法写入NTFS硬盘——Mounty for NTFS
  17. 用python做动画的代码_Python应用 | 三行代码实现GIF动画
  18. 使用WIFI模块与MQTT服务器进行透传数据通讯(M0E1系列)
  19. 应用Microchip dsPIC芯片日志——烧录出现的问题
  20. 企业微信/skype sdk demo

热门文章

  1. C# 实现登录并跳转界面
  2. zotero文献管理器及其使用姿势(不定时更新)
  3. Android控件——TextView与EditText
  4. 8.04版本liveCD安装到94%时出现GRUB致命错误的问题解决
  5. 智课雅思词汇---十二、vent是什么意思
  6. 计算与推断思维 十一、估计
  7. python爬虫入门 之 requests 模块
  8. 深度学习之TensorFlow(一)
  9. KIS专业版12.0迁移K3WISE14.3后自定义核算项目权限问题
  10. 使用python对图片进行压缩