IT袋

当前位置:主页 > 经验教程 > 建站编程 >

Spring

Spring Boot与HttpClient:轻松实现GET和POST请求(2)

时间:2023-11-09 14:37:13 来源:IT袋 作者:马勇
导读:Spring,1.3 HttpClient的maven坐标 dependency> groupId>org.apache.httpcomponents/groupId> artifactId>httpclient/artifactId> version>4.5.13/version>/dependency> 1.4. HttpClient的核心API HttpClient:Http客

Spring

Spring

1.3 HttpClient的maven坐标

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

1.4. HttpClient的核心API

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

1.5. HttpClient发送请求步骤

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

2. SpringBoot快速入门HttpClient

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

项目结构

创建HttpClient-demo,并导入对应依赖到pom.xml

  • 完整项目结果

Spring

  • pom.xml 依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.7.15</version>
    </parent>
    <groupId>com.zbbmeta</groupId>
    <artifactId>HttpClient-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
    </dependencies>
</project>

2.1.GET方式请求

实现步骤:

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

com.zbbmeta.controller包下创建HttpClientController接口类,并创建testGET()方法

package com.zbbmeta.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
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.message.BasicHeader;
import org.apache.http.util.EntityUtils;
import org.junit.jupiter.api.Test;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
/**
 * @author springboot葵花宝典
 * @description: TODO
 */
@RestController
@RequestMapping(value = "/httpclient")
@Slf4j
@Api(tags = "HttpClient测试接口")
public class HttpClientController {
   
    @GetMapping("/httpget")
    @ApiOperation(value = "http员工状态")
    public String testGET() throws Exception{
        //创建httpclient对象
       CloseableHttpClient httpClient = HttpClients.createDefault();
       
        //创建请求对象
        HttpGet httpGet = new HttpGet("http://localhost:8899/admin/employee/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();
        return "服务端返回的数据为:" + body;
    }n "服务端返回的数据为:" + body;
    }
}

启动项目,PostMan访问http://localhost:8899/httpclient/httpget请求

测试结果

Spring

2.2. POST方式请求

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

实现步骤:

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

com.zbbmeta.controller包下创建HttpClientController接口类,并创建testPost()方法

 @PostMapping("/httppost")
    @ApiOperation(value = "http员工登录")
    public String testPost() throws Exception{
        //创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //创建请求对象
        HttpPost httpPost = new HttpPost("http://localhost:8899/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();
        return  body;
    }

测试结果

Spring

以上就是Spring、Boot与HttpClient 及其 轻松实现GET和POST请求的全面介绍了,希望给IT袋网网的网友们带来一些相关知识。

相关阅读

  • 什么是数据库索引 有哪些分类以及优缺点?

    什么是数据库索引 有哪些分类以及优缺点?

    小编为网友们解答什么是数据库索引方面的介绍,相关内容具体如下: 什么是索引 索引是创建在表上的,帮我们快速检索数据的一种数据结构。 索引的分类 主键索引:表设立主键之后会自动

  • 网络推广有多少种方法 建立自己的网站平台

    网络推广有多少种方法 建立自己的网站平台

    全面为您解析网络推广有多少种方法和建立自己的网站平台的电脑方面的小经验,一起来看看吧! 时光匆匆如流水,转眼间,三年时间已过。从网推小白,成为网推高手。还记得当初,掌握一

  • 什么是 GaussDB高斯数据库 高斯数据库主要特点

    什么是 GaussDB高斯数据库 高斯数据库主要特点

    今日小编为你讲解及GaussDB高斯数据库的相关知识,下面小编为您详细解答 高斯数据库(GaussDB)是华为推出的一种分布式关系数据库。 它通过软硬件一体化的设计,实现了高性能、高可用、高

  • ppt模板素材网站 常用免费ppt模板使用

    ppt模板素材网站 常用免费ppt模板使用

    小编为大家说一说ppt模板素材网站和常用免费ppt模板使用的IT知识,如有不对的地方欢迎指正! 你还在没日没夜埋头苦干吗?每天都在为做PPT而熬夜加班吗?花费大把时间做出来的依然不尽人