一篇文章读懂什么是HttpEntity?

HttpEntity 类是 Spring 框架中的一个重要类,它用来封装 HTTP 请求或响应的头信息和正文内容。在 Spring 的 RestTemplateWebClientRestController 中广泛使用。以下是 HttpEntity 类的详细介绍。

HttpEntity 类概述

HttpEntity<T> 是一个泛型类,其中 T 代表请求或响应的主体类型。它通常用来表示一个 HTTP 请求或响应,其中包括:

  1. HTTP Headers:请求或响应的头信息。
  2. HTTP Body:请求或响应的正文内容。

主要构造函数

HttpEntity 提供了几个构造函数,用于创建带有或不带有头信息和正文内容的实例:

  • 无参数构造函数

HttpEntity<T> entity = new HttpEntity<>();
  • 带有正文内容的构造函数

HttpEntity<T> entity = new HttpEntity<>(body);
  • 带有头信息的构造函数

HttpEntity<T> entity = new HttpEntity<>(headers);
  • 带有头信息和正文内容的构造函数

HttpEntity<T> entity = new HttpEntity<>(body, headers);

主要方法

HttpEntity 类提供了一些方法,用于获取封装的头信息和正文内容:

  1. 获取头信息

HttpHeaders headers = entity.getHeaders();
  1. 获取正文内容

T body = entity.getBody();

示例使用

以下是一些使用 HttpEntity 的示例代码,展示了如何在不同场景中使用它。

RestTemplate 中使用 HttpEntity

使用 RestTemplate 发送 HTTP 请求时,通常会使用 HttpEntity 来封装请求头和正文内容。

发送带有请求头和正文内容的 POST 请求


// 创建请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth("your-token"); // 设置Authorization头

// 创建请求体
User user = new User();
user.setId(1044L);
user.setName("荀铂尧22223");
user.setAge(1044);
user.setAddress("这是测试2");

// 创建HttpEntity对象
HttpEntity<User> requestEntity = new HttpEntity<>(user, headers);

// 发送POST请求
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.postForObject(
        "http://localhost:8080/user/insert1",
        requestEntity,
        String.class);

System.out.println("Response: " + response);
WebClient中使用 HttpEntity

WebClient 也可以使用 HttpEntity 来设置请求头和正文内容。

发送带有请求头和正文内容的 POST 请求


WebClient webClient = WebClient.create();

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth("your-token");

HttpEntity<User> requestEntity = new HttpEntity<>(user, headers);

webClient.post()
        .uri("http://localhost:8080/user/insert1")
        .headers(httpHeaders -> httpHeaders.addAll(requestEntity.getHeaders()))
        .bodyValue(requestEntity.getBody())
        .retrieve()
        .bodyToMono(String.class)
        .doOnNext(response -> System.out.println("Response: " + response))
        .block();

总结

HttpEntity 是一个用于封装 HTTP 请求或响应的头信息和正文内容的类。它在 Spring 框架中被广泛使用,特别是在 RestTemplateWebClient 中,用于构建和发送 HTTP 请求时非常有用。通过使用 HttpEntity,你可以方便地设置请求的头信息和正文内容,确保请求按照预期的格式发送到目标服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值