HttpClient

HttpClient介绍

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

HttpClient作用:

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

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

HttpClient应用场景:

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

HttpClient的核心API:

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

HttpClient发送请求步骤:

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

初见时的疑惑:不是已经有Controller了吗?为什么还要有HttpClient

解答:HttpClient与Controller是完全不同的概念,HttpClient是作为一个客服端主动发送请求的,而Controller是作为服务端被动接收请求并相应数据的

HttpClient 是 向外发起请求的工具(客户端行为),用于跨服务或第三方 API 调用。

Controller 是 接收并处理请求的入口(服务端行为),负责协调业务逻辑并返回响应。

二者在架构中分工明确,共同完成完整的 HTTP 交互闭环。

HttpClient入门程序

实现步骤:

  1. 创建HttpClient对象
  2. 创建请求对象
  3. 发送请求,接收响应结果
  4. 解析响应结果
  5. 关闭资源

HttpGet

public void testHttpClient() throws Exception {
    //创建HttpClient对象
    CloseableHttpClient httpClient = HttpClients.createDefault();
    //创建请求对象
    HttpGet httpGet =new HttpGet("http://localhost:8080/user/shop/status");
    //调用HttpClient的execute方法发送请求
    CloseableHttpResponse response = httpClient.execute(httpGet);

    //获取服务端返回的状态码
    int statusCode = response.getStatusLine().getStatusCode();
    System.out.println(statusCode);

    //响应体
    HttpEntity entity = response.getEntity();
    //用EntityUtils来解析响应体
    String body = EntityUtils.toString(entity);
    System.out.println("服务端返回的数据为:"+body);
    //关闭资源
    response.close();
    httpClient.close();
}

返回的结果就和响应给前端的响应数据一样

HttpPost

public void testHttpClientPost() 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();
    //用EntityUtils来解析响应体
    String body = EntityUtils.toString(entity1);
    System.out.println("服务端响应的数据为:"+body);
    //关闭资源
    response.close();
    httpClient.close();
}

也就比HttpGet方法多了一个封装请求参数的步骤

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇