当前位置: 首页 > news >正文

【JavaWeb后端学习笔记】使用HttpClient发送Http请求

使用HttpClient发送Http请求需要在项目中导入相关依赖:

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency>

1、 HttpClient发送Get请求

分如下几步:

  1. 获取HttpClient对象。使用HttpClients.createDefault()
  2. 创建请求对象
  3. 发送Get请求,获取响应结果
  4. 解析响应结果(获取状态码,获取响应数据)
  5. 释放资源

Java代码示例:

public void testHttpGet() throws IOException {// 1. 获取HttpClient对象CloseableHttpClient aDefault = HttpClients.createDefault();// 2. 创建请求对象,创建Get请求对象时,传入要访问的资源路径HttpGet httpGet = new HttpGet("http://localhost:8080//demo");// 3. 发送请求,获取响应结果,调用execute()方法发送请求可能会出现异常,需要处理。CloseableHttpResponse response = aDefault.execute(httpGet);// 4.1 获取响应状态码,int statusCode = response.getStatusLine().getStatusCode();System.out.println("statusCode = " + statusCode);;// 4.2 解析响应结果。响应结果封装在HttpEntity对象中,可以使用EntityUtils工具类解析。HttpEntity entity = response.getEntity();String body = EntityUtils.toString(entity);System.out.println("body = " + body);// 5. 释放资源,最好是放在finally块中response.close();aDefault.close();
}

2、HttpClient发送Post请求

分如下几步:

  1. 创建HttpClient请求对象。使用HttpClients.createDefault()
  2. 创建Post请求对象。直接new一个HttpPost()对象,注意构造方法中传入请求资源路径
  3. 构造请求体。请求体一般使用Json格式存放请求数据。通过Post请求对象调用setEntity()方法设置请求体。setEntity()方法需要传入一个Entity接口实现类对象。Entity接口实现类对象有很多,这里以StringEntity举例。在StringEntity构造方法中需要传入一个Json格式的字符串,因此使用FastJson中的JsonObject类构造一个Json对象转成Json字符串。
  4. 指定编码格式和数据格式。在构造好请求体后,需要给请求体指定编码格式和数据格式。分别通过Entity实现类对象调用setContentEncoding()方法和setContentType()方法实现。
  5. 设置响应体。通过HttpPost()对象调用setEntity()方法设置请求体。
  6. 发送请求,获取响应结果
  7. 解析结果
  8. 释放资源

Java代码示例:

public void testHttpClient() throws IOException {// 1. 创建HttpClient请求对象CloseableHttpClient aDefault = HttpClients.createDefault();// 2. 创建Post请求对象,设置请求路径HttpPost httpPost = new HttpPost("http://localhost:8080//demo");// 3. 构造请求体//    请求数据以Json格式放在请求体中//    请求体需要一个Entity接口的实现类对象,此处构造一个StringEntity对象作为请求体JSONObject jsonObject = new JSONObject(); // 使用阿里的FastJson构造Json格式数据jsonObject.put("name", "Tom");jsonObject.put("age", 18);jsonObject.put("gender", 1);StringEntity entity = new StringEntity(jsonObject.toString()); // 转成Json格式字符串传入StringEntity构造方法// 4. 指定编码格式与数据格式entity.setContentType("application/json"); // 数据格式entity.setContentEncoding("utf-8"); // 编码格式// 5. 设置响应体httpPost.setEntity(entity);// 6. 发送请求,获取响应结果CloseableHttpResponse response = aDefault.execute(httpPost);// 7. 解析响应结果// 7.1 获取状态码int statusCode = response.getStatusLine().getStatusCode();System.out.println("statusCode = " + statusCode);// 7.2 获取响应数据HttpEntity entity1 = response.getEntity();String body = EntityUtils.toString(entity1);System.out.println("body = " + body);// 8. 释放资源aDefault.close();response.close();
}
http://www.lryc.cn/news/504075.html

相关文章:

  • 2024告别培训班 数通、安全、云计算、云服务、存储、软考等1000G资源分享
  • 【C++】- 掌握STL List类:带你探索双向链表的魅力
  • 基于streamlit搭简易前端页面
  • Harmony Next开发通过bindSheet绑定半模态窗口
  • YOLOv11改进,YOLOv11添加DLKA-Attention可变形大核注意力,WACV2024 ,二次创新C3k2结构
  • 【51单片机】矩阵按键快速上手
  • 一文说清:git reset HEAD原理
  • 【前端面试题】书、定位问题、困难
  • WADesk 升级 Webpack5 一些技术细节认识5和4的区别在哪里
  • 学习 Dockerfile 常用指令
  • day11 性能测试(3)——Jmeter 断言+关联
  • ES6中的map和set
  • UE5中实现Billboard公告板渲染
  • 泊松编辑 possion editing图像合成笔记
  • #渗透测试#漏洞挖掘#红蓝攻防#SRC漏洞挖掘
  • 系列2:基于Centos-8.6Kubernetes 集成GPU资源信息
  • Coturn 实战指南:WebRTC 中的 NAT 穿透利器
  • 基于卷积神经网络的Caser算法
  • 自闭症在学校:了解自闭症的特点,优化学校教育方式
  • 多线程的知识总结(8):用 thread 类 或全局 async (...) 函数,创建新线程时,谁才是在新线程里第一个被执行的函数
  • ArcGIS地理空间平台manager存在任意文件读取漏洞
  • HarmonyOS Next 元服务新建到上架全流程
  • 【Linux】makefile项目管理
  • Lumos学习王佩丰Excel第二十一讲:经典Excel动态图表实现原理
  • Linux框架(二)——pinctrl和gpio子系统
  • C++ string的基本概念
  • MAC虚拟机上安装WDA环境
  • 与 Cursor AI 对话编程:2小时开发报修维修微信小程序
  • leetcode-73.矩阵置零-day5
  • CSS学习记录13