苍穹外卖-day06(HttpClient) - a

news/2025/9/26 0:37:56/文章来源:https://www.cnblogs.com/atao-BigData/p/19112377

苍穹外卖-day06(HttpClient)

课程内容

  • HttpClient

1. HttpClient

1.1 介绍

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

image

HttpClient作用:

  • 发送HTTP请求
  • 接收响应数据

image
为什么要在Java程序中发送Http请求?有哪些应用场景呢?

HttpClient应用场景:

当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时

image
image
image

其实,应用程序本身并未实现这些功能,都是在应用程序里访问提供这些功能的服务,访问这些服务需要发送HTTP请求,并且接收响应数据,可通过HttpClient来实现。

image

HttpClient的maven坐标:

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

HttpClient的核心API:

  • HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。
  • HttpClients:可认为是构建器,可创建HttpClient对象。
  • CloseableHttpClient:实现类,实现了HttpClient接口。
  • HttpGet:Get方式请求类型。
  • HttpPost:Post方式请求类型。

HttpClient发送请求步骤:

  • 创建HttpClient对象
  • 创建Http请求对象
  • 调用HttpClient的execute方法发送请求

1.2 入门案例

对HttpClient编程工具包有了一定了解后,那么,我们使用HttpClient在Java程序当中来构造Http的请求,并且把请求发送出去,接下来,就通过入门案例分别发送GET请求POST请求,具体来学习一下它的使用方法。

1.2.1 GET方式请求

正常来说,首先,应该导入HttpClient相关的坐标,但在项目中,就算不导入,也可以使用相关的API。

因为在项目中已经引入了aliyun-sdk-oss坐标:

<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId>
</dependency>

上述依赖的底层已经包含了HttpClient相关依赖。

image

故选择导入或者不导入均可。

进入到sky-server模块,编写测试代码,发送GET请求。

实现步骤:

  1. 创建HttpClient对象
  2. 创建请求对象
  3. 发送请求,接受响应结果
  4. 解析结果
  5. 关闭资源
package com.sky.test;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class HttpClientTest {/*** 测试通过httpclient发送GET方式的请求*/@Testpublic void testGET() throws Exception{//创建httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建请求对象HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");//发送请求,接受响应结果CloseableHttpResponse response = httpClient.execute(httpGet);//获取服务端返回的状态码int statusCode = response.getStatusLine().getStatusCode();System.out.println("服务端返回的状态码为:" + statusCode);HttpEntity entity = response.getEntity();String body = EntityUtils.toString(entity);System.out.println("服务端返回的数据为:" + body);//关闭资源response.close();httpClient.close();}
}

在访问http://localhost:8080/user/shop/status请求时,需要提前启动项目。

测试结果:

image

1.2.2 POST方式请求

在HttpClientTest中添加POST方式请求方法,相比GET请求来说,POST请求若携带参数需要封装请求体对象,并将该对象设置在请求对象中。

实现步骤:

  1. 创建HttpClient对象
  2. 创建请求对象
  3. 发送请求,接收响应结果
  4. 解析响应结果
  5. 关闭资源
	/*** 测试通过httpclient发送POST方式的请求*/@Testpublic void testPOST() throws Exception{// 创建httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建请求对象HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");JSONObject jsonObject = new JSONObject();jsonObject.put("username","admin");jsonObject.put("password","123456");StringEntity entity = new StringEntity(jsonObject.toString());//指定请求编码方式entity.setContentEncoding("utf-8");//数据格式entity.setContentType("application/json");httpPost.setEntity(entity);//发送请求CloseableHttpResponse response = httpClient.execute(httpPost);//解析返回结果int statusCode = response.getStatusLine().getStatusCode();System.out.println("响应码为:" + statusCode);HttpEntity entity1 = response.getEntity();String body = EntityUtils.toString(entity1);System.out.println("响应数据为:" + body);//关闭资源response.close();httpClient.close();}

测试结果:

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业网站站内优化宁津有培训做网站的

函数的嵌套函数也是可以嵌套的。也就是可以在一个函数内部定义和运行另一个函数。举个例子&#xff1a;>>> def funa():print(funa()正在被调用)def funb():print(funb()正在被调用)funb()>>> funa()funa()正在被调用funb()正在被调用在上述举例中&#xff0…

元人文AI的领域化部署:从哲学构想到实践应用的完整路径

元人文AI的领域化部署:从哲学构想到实践应用的完整路径 一、引言:元人文AI的领域化转向 随着人工智能技术的持续演进,特别是大模型能力的快速提升,AI系统已经从单纯的工具转变为具有一定价值判断能力的智能体。在这…

10G网站空间回龙观手机网站建设服务

包含(后代)选择器 包含选择器&#xff0c;即加入空格,用于选择指定标签元素下的后辈元素。如右侧代码编辑器中的代码&#xff1a; .first span{color:red;} 这行代码会使第一段文字内容中的“胆小如鼠”字体颜色变为红色。 请注意这个选择器与子选择器的区别&#xff0c;子…

Python 虚拟环境管理-学习笔记分享

Python 虚拟环境管理-学习笔记分享python 虚拟环境管理参考文献 虚拟环境:你肯定用过,但不一定了解.hucci 从pip到uv:一口气梳理现代Python项目管理全流程! 【uv】Python迄今最好的项目管理+环境管理工具(吧?) …

做题记录3

CF2149E. Hidden Knowledge of the Ancients 思路 滑动窗口 + 双指针。 先不考虑长度的限制,求"恰好有 \(k\) 个不同的数"的区间。可以维护两个窗口,一个是以当前的位置为右端点,且第一个最多有 \(k\) 个…

网站建设咨询有客诚信wordpress手机全部显示

在Shiro中我们可以通过org.apache.shiro.session.mgt.eis.SessionDAO对象的getActiveSessions()方法方便的获取到当前所有有效的Session对象。通过这些Session对象&#xff0c;我们可以实现一些比较有趣的功能&#xff0c;比如查看当前系统的在线人数&#xff0c;查看这些在线用…

寻求网站建设技术怀柔网站建设优化seo

根据Github Trendings的统计,今日(2024-03-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目2Python项目2非开发语言项目2HTML项目1CSS项目1Dart项目1TypeScript项目1Go项目1JavaScript项目1《Hello 算法》:动画图解、一键运行的…

oucaiclub_cheapter1

Part1 代码练习 螺旋分类实验过程 初始准备生成样本线性模型分类神经网络分类反思总结 问题与解决 首次尝试中,在进行神经网络分类时,损失和准确率的结果与线性模型基本一样,没有明显改善。检查错误后,发现在设置优…

2025年9月训练记录

2025年9月训练记录2025/9/26 abc416_f 题意:树上选\(k\)条不相交的链,使得其贡献和最大. 可以考虑树形\(dp\). 考虑状态的设计如下:设\(dp_{u,i,0/1/2}\)表示当前选了以\(u\)为根的子树,且当前子树的根节点的状态为…

20250925 之所思 - 人生如梦

20250925 之所思9月23日,秋分,我最喜欢的节气;在南方,“桦加沙”很快就要在广东沿海登陆...收到了这两年来对自己最重要的邮件,被任命为中国区部门的软件discipline经理。非常感慨,十多年的奋斗不止,终于在这一…

在CodeBolcks下wxSmith的C++编程教程——在屏幕上绘图和保存绘图

0.前言欢迎来到 wxSmith 教程页面!wxSmith 与 Code::Blocks、wxWidgets 和 C++ 编译器相结合,为您提供一种所见即所得的方式来创建具有图形用户界面 (GUI) 的应用程序。该组合形成了一个用于快速应用程序开发 (RA…

怎么用网站做chm中国电子政务网站建设意见

概述 在实际开发过程中&#xff0c;我们经常需要调用对方提供的接口或测试自己写的接口是否合适。 很多项目都会封装规定好本身项目的接口规范&#xff0c;所以大多数需要去调用对方提供的接口或第三方接口&#xff08;短信、天气等&#xff09;。 在Java项目中调用第三方接口…

苍穹外卖-day07(缓存菜品,缓存套餐,添加购物车,查看购物车,清空购物车) - a

苍穹外卖-day07(缓存菜品,缓存套餐,添加购物车,查看购物车,清空购物车) 课程内容缓存菜品 缓存套餐 添加购物车 查看购物车 清空购物车功能实现:缓存商品、购物车 效果图:1. 缓存菜品 1.1 问题说明 用户端小程…

一次CPU飙升问题排查定位

操作流程CPU飙升问题定位:定位高CPU进程 进程内高CPU线程 top -Hp [PID] jstack [PID] grep -A 20 [十六进制TID]抓取线程栈/arthas工具attach进程后profiler生成火焰图 2.排查常见原因 代码逻辑问题:死循环、递归爆…

ros2 control 2

controller 创建一个pkg,在pkg中新建一个controller.yaml。点击查看代码 controller_manager:ros__parameters:update_rate: 50joint_state_broadcaster:type: joint_state_broadcaster/JointStateBroadcasterdiff_dr…

基于洞察的智能编程法——从直觉到代码的原型炼成术

本文基于分析心理学的知识,介绍一种针对 Ni 主导人格设计的高效 AI 编程工具使用方式,旨在将 Ni 主导者对系统演化路径的深层洞察转化为可规模化、可验证、高效落地的技术产出。基于洞察的智能编程法——从直觉到代码…

lc1036-逃离大迷宫

难度:困难题目描述原题示例 输入:blocked = [[0,1],[1,0]], source = [0,0], target = [0,2] 输出:false输入:blocked = [], source = [0,0], target = [999999,999999] 输出:true题解思路:bfs golang 写得不好,…

做后期哪个网站素材好博纳网络科技有限公司

函数是将具有独立功能的代码块组成一个整体&#xff0c;使其具有特殊功能的代码集。它将复杂的算法过程分解为若干个小任务&#xff0c;隐藏相关细节&#xff0c;使得程序结构更加清晰&#xff0c;易于维护。通过接收输入参数完成一段算法指令&#xff0c;输出或存储相关结果。…

防城港网站seo免费申请网站 主机 空间

软件架构之计算机网络 第 4 章 计算机网络4.1 网络架构与协议4.1.1 网络互联模型4.1.2 常见的网络协议4.1.3 IPv6 4.2 局域网与广域网4.2.2 无线局域网4.2.3 广域网技术4.2.4 网络接入技术 4.3 网络互连与常用设备4.4 网络工程4.4.1 网络规划4.4.2 网络设计4.4.3 网络实施 4.5 …

9.25学习笔记

环境速览( 节点 新装组件 端口 备注 node1 Hive3.1.3 + MySQL 8.0 + Spark3.5.0 3306/10000/8080 HiveServer2 WebUI node2 Spark HistoryServer 18080 日志持久化到 HDFS node3 Kafka 3.7.0 + ZooKeeper(复用) 9092 …