惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
博客园_首页
量子位
Jina AI
Jina AI
S
SegmentFault 最新的问题
IT之家
IT之家
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
S
Securelist
Google Online Security Blog
Google Online Security Blog
P
Privacy International News Feed
博客园 - Franky
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
C
Cisco Blogs
V
Vulnerabilities – Threatpost
腾讯CDC
The Hacker News
The Hacker News
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
Scott Helme
Scott Helme
B
Blog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客园 - SHENHUANJIE

Marvis 使用进阶:联动与外部资源整合 这是一篇用 Marvis发布的文章,让大家都去用 Marvis 程序员保持高效的5个习惯 Kimi WebBridge:让 AI 真正操控你的浏览器 腾讯突然扔出王炸!马维斯一夜刷屏,打工人终于有救了? AIGC-测试库账号密码 openspec 是什么?怎么正确使用? # Hello World 的传奇起源 Please Start Here AI助手记忆系统:从金鱼到大象的进化之路 mac 快速切换 python 版本 卢曼卡片盒笔记法介绍 Introduction to the Zettelkasten Method Uni-app页面信息与元素影响解析 DevOps 入门指南:基础知识解读 「读书计划」《啊哈!算法》7日结构化学习规划 跨平台开发方案:优缺点对比及选择指南 Java实现简单多层感知器神经网络 Google开发者账号注册步骤详解 ipify.org:免费IP查询服务详解 Google开发者利器:云平台与Firebase服务解析 Google Fonts字体库使用指南 UNI-APP + Spring Boot 实现小程序手机号登录 UNI-APP 获取用户手机号授权与服务器端处理指南 MySQL 8.0 如何禁用 ONLY_FULL_GROUP_BY 平衡工作与生活的10个实用方法 Linux安装Ollama并启用服务教程 如何在 LobeChat 中使用 Ollama Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.
Java RestTemplate 发送 POST 请求设置请求体示例
SHENHUANJIE · 2025-01-15 · via 博客园 - SHENHUANJIE

  在 Java 中使用 RestTemplate​ 发送 POST 请求并设置请求体(body)参数,可以按照以下步骤进行。RestTemplate​ 是 Spring 提供的一个用于发送 HTTP 请求的工具类。

示例代码

  以下是一个完整的示例,展示如何使用 RestTemplate​ 发送 POST 请求并设置请求体参数:

import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;

public class RestTemplateExample {
    public static void main(String[] args) {
        // 1. 创建 RestTemplate 实例
        RestTemplate restTemplate = new RestTemplate();

        // 2. 设置请求 URL
        String url = "https://example.com/api/endpoint";

        // 3. 设置请求头(如果需要)
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON); // 设置请求体为 JSON 格式
        // 如果需要其他请求头,可以继续添加
        // headers.set("Authorization", "Bearer your_token");

        // 4. 设置请求体参数(以 Map 为例)
        Map<String, Object> requestBody = new HashMap<>();
        requestBody.put("key1", "value1");
        requestBody.put("key2", "value2");

        // 5. 将请求体和请求头封装到 HttpEntity 中
        HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(requestBody, headers);

        // 6. 发送 POST 请求
        ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);

        // 7. 处理响应
        if (response.getStatusCode() == HttpStatus.OK) {
            System.out.println("请求成功,响应内容: " + response.getBody());
        } else {
            System.out.println("请求失败,状态码: " + response.getStatusCode());
        }
    }
}

代码说明

  1. 创建 RestTemplate实例

    • RestTemplate​ 是 Spring 提供的 HTTP 客户端工具,用于发送 HTTP 请求。
  2. 设置请求 URL

    • 将目标 API 的 URL 设置为 url​ 变量。
  3. 设置请求头

    • 使用 HttpHeaders​ 设置请求头,例如 Content-Type​ 为 application/json​。
    • 如果需要其他请求头(如 Authorization​),可以继续添加。
  4. 设置请求体

    • 使用 Map​ 或其他对象(如自定义的 Java 对象)作为请求体。
    • 如果需要发送 JSON 数据,可以将 Map​ 或对象转换为 JSON 格式。
  5. 封装请求体和请求头

    • 使用 HttpEntity​ 将请求体和请求头封装在一起。
  6. 发送 POST 请求

    • 使用 restTemplate.postForEntity​ 方法发送 POST 请求。
    • 该方法返回一个 ResponseEntity​ 对象,包含响应状态码和响应体。
  7. 处理响应

    • 检查响应状态码(如 HttpStatus.OK​),并处理响应体。

其他注意事项

  • 如果需要发送复杂的 JSON 数据,可以定义一个 Java 类来表示请求体,然后直接传递该类的实例。
  • 如果需要发送表单数据(application/x-www-form-urlencoded​),可以使用 MultiValueMap​ 作为请求体。
  • 如果 API 需要其他认证方式(如 OAuth2.0),可以在请求头中添加 Authorization​。

示例:发送表单数据

  如果需要发送表单数据,可以这样写:

import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

// 设置表单数据
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("key1", "value1");
formData.add("key2", "value2");

// 设置请求头为表单格式
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

// 发送请求
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);

  希望这个示例对你有帮助!如果有其他问题,欢迎继续提问。