• SpringBoot中HttpClient的使用



    1. HttpClient 介绍

    HttpClientApache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta上很著名的另外两个开源项目 CactusHTMLUnit 都使用了 HttpClient

    核心 API:

    • HttpClient
    • HttpClients
    • CloseableHttpClient
    • HttpGet
    • HttpPost

    发送请求步骤:

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

    2. 导入坐标

    <dependency>
        <groupId>org.apache.httpcomponentsgroupId>
        <artifactId>httpclientartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    3. 使用 HttpClient 发送 Get 请求

    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.entity.StringEntity;
    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;
    
    import java.io.IOException;
    
    @SpringBootTest
    public class HttpClientTest {
    
        /**
         * 测试httpclient GET
         */
        @Test
        public void testGet() throws IOException {
            // 创建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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    4. 使用 HttpClient 发送 Post 请求

    package com.sky.test;
    
    import com.alibaba.fastjson.JSONObject;
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    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;
    
    import java.io.IOException;
    
    @SpringBootTest
    public class HttpClientTest {
    
        /**
         * 测试httpclient POST
         */
        @Test
        public void testPost() throws IOException {
            // 创建httpclient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            // 创建请求对象
            HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");
    
            // 封装post请求
            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();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
  • 相关阅读:
    简单版 快速掌握实践 SpringBoot继承Shiro框架详解!
    2022-05-05 mybatis-plus 批量插入修改操作
    离线数仓 (十五) --------- DWT 层搭建
    【数据结构】顺序表
    从指针开始变强(二)之函数指针
    PrivacyIN隐私学院第二期训练营开启报名 聚焦门限签名及安全多方计算
    echarts-liquidfill水球图教程
    商品防伪查询溯源小程序开发源码
    Bartender for Mac菜单栏图标自定义
    DEJA_VU3D - Cesium功能集 之 086-地图打印(场景专题图输出)完整版
  • 原文地址:https://blog.csdn.net/qq_46456049/article/details/134099981