使用Java客户端向Spring Boot服务器发送POST请求

使用java客户端向spring boot服务器发送post请求

本文档旨在指导开发者如何使用Java客户端向Spring Boot服务器发送POST请求。文章将首先介绍问题背景,然后提供两种解决方案:一种是使用HttpURLConnection,另一种是使用Java 11引入的HttpClient。我们将详细讲解每种方法的实现步骤,并提供完整的代码示例,帮助开发者快速掌握POST请求的发送方法,并解决Spring Boot服务端无法接收POST请求的问题。

使用 HttpURLConnection 发送 POST 请求

HttpURLConnection 是 Java 标准库中提供的用于进行 HTTP 通信的类。虽然它功能强大,但使用起来相对繁琐。以下是使用 HttpURLConnection 发送 POST 请求的步骤和代码示例:

创建 URL 对象: 使用 Spring Boot 服务器的 URL 创建 URL 对象。

String url = "http://127.0.0.1:8090/online";URL mUrl = new URL(url);

打开连接: 使用 URL 对象的 openConnection() 方法打开一个 HttpURLConnection 连接。

立即学习“Java免费学习笔记(深入)”;

HttpURLConnection urlConn = (HttpURLConnection) mUrl.openConnection();

设置请求方法: 设置请求方法为 POST。

urlConn.setRequestMethod("POST");

设置请求头: 设置 Content-Type 请求头,指定请求体的媒体类型。

urlConn.setRequestProperty("Content-Type", "text/plain; charset=UTF-8");

注意: Content-Type 非常重要,Spring Boot 才能正确解析请求体。常用的类型包括 application/json (JSON 数据), application/x-www-form-urlencoded (表单数据), 和 text/plain (纯文本数据)。 根据你的 Spring Boot 服务端期望接收的类型来设置。

允许输出: 设置 DoOutput 为 true,允许向服务器发送数据。

urlConn.setDoOutput(true);

写入请求体: 获取输出流,并将请求体数据写入。

String query = "Body";try (OutputStream os = urlConn.getOutputStream()) {    byte[] input = query.getBytes(StandardCharsets.UTF_8);    os.write(input, 0, input.length);}

获取响应: 获取响应码,并读取响应内容。

int responseCode = urlConn.getResponseCode();System.out.println("Response Code : " + responseCode);try (BufferedReader br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), StandardCharsets.UTF_8))) {    StringBuilder response = new StringBuilder();    String responseLine = null;    while ((responseLine = br.readLine()) != null) {        response.append(responseLine.trim());    }    System.out.println(response.toString());}

断开连接: 关闭连接。

urlConn.disconnect();

完整示例代码:

Post AI Post AI

博客文章AI生成器

Post AI 43 查看详情 Post AI

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.nio.charset.StandardCharsets;public class HttpURLConnectionExample {    public static void main(String[] args) throws IOException {        String url = "http://127.0.0.1:8090/online";        URL mUrl = new URL(url);        HttpURLConnection urlConn = (HttpURLConnection) mUrl.openConnection();        urlConn.setRequestMethod("POST");        urlConn.setRequestProperty("Content-Type", "text/plain; charset=UTF-8");        urlConn.setDoOutput(true);        String query = "Body";        try (OutputStream os = urlConn.getOutputStream()) {            byte[] input = query.getBytes(StandardCharsets.UTF_8);            os.write(input, 0, input.length);        }        int responseCode = urlConn.getResponseCode();        System.out.println("Response Code : " + responseCode);        try (BufferedReader br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), StandardCharsets.UTF_8))) {            StringBuilder response = new StringBuilder();            String responseLine = null;            while ((responseLine = br.readLine()) != null) {                response.append(responseLine.trim());            }            System.out.println(response.toString());        }        urlConn.disconnect();    }}

使用 HttpClient (Java 11+) 发送 POST 请求

Java 11 引入了新的 HttpClient API,它提供了更简洁、更现代化的方式来发送 HTTP 请求。以下是使用 HttpClient 发送 POST 请求的步骤和代码示例:

创建 HttpClient 对象: 使用 HttpClient.newHttpClient() 创建一个 HttpClient 实例。

HttpClient client = HttpClient.newHttpClient();

创建 HttpRequest 对象: 使用 HttpRequest.newBuilder() 构建一个 HttpRequest 对象。你需要指定 URL, 请求方法 (POST), 和请求体。

String url = "http://127.0.0.1:8090/online";String query = "Body";HttpRequest request = HttpRequest.newBuilder()        .uri(URI.create(url))        .header("Content-Type", "text/plain; charset=UTF-8") // 设置 Content-Type        .POST(HttpRequest.BodyPublishers.ofString(query, StandardCharsets.UTF_8))        .build();

注意: 同样,Content-Type 的设置非常重要,需要与 Spring Boot 服务端期望的类型一致。 HttpRequest.BodyPublishers.ofString() 方法用于创建请求体。

发送请求: 使用 HttpClient 的 send() 方法发送请求,并获取响应。

HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

HttpResponse.BodyHandlers.ofString() 指定响应体的内容类型为 String。

处理响应: 获取响应状态码和响应体。

System.out.println("Response Status Code: " + response.statusCode());System.out.println("Response Body: " + response.body());

完整示例代码:

import java.io.IOException;import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.nio.charset.StandardCharsets;public class HttpClientExample {    public static void main(String[] args) throws IOException, InterruptedException {        HttpClient client = HttpClient.newHttpClient();        String url = "http://127.0.0.1:8090/online";        String query = "Body";        HttpRequest request = HttpRequest.newBuilder()                .uri(URI.create(url))                .header("Content-Type", "text/plain; charset=UTF-8")                .POST(HttpRequest.BodyPublishers.ofString(query, StandardCharsets.UTF_8))                .build();        HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());        System.out.println("Response Status Code: " + response.statusCode());        System.out.println("Response Body: " + response.body());    }}

Spring Boot 服务端代码示例

确保你的 Spring Boot 服务端能够正确接收 POST 请求。以下是一个简单的示例:

import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MessageService {    @PostMapping(path = "/online", consumes = "text/plain") // 指定 consumes    public ResponseEntity getResponse(@RequestBody String requestBody){        System.out.println("Post Recieved: " + requestBody);        return new ResponseEntity("Received: " + requestBody, HttpStatus.OK);    }}

关键点:

@PostMapping 注解: 使用 @PostMapping 注解来处理 POST 请求。path 属性: 设置 path 属性来指定请求路径。consumes 属性: 设置 consumes 属性来指定服务端能够处理的 Content-Type。 确保它与客户端发送的 Content-Type 一致。 在这个例子中,我们指定 consumes = “text/plain”,表示服务端期望接收纯文本数据。@RequestBody 注解: 使用 @RequestBody 注解来接收请求体数据。

总结与注意事项

Content-Type 匹配: 确保客户端发送的 Content-Type 与 Spring Boot 服务端 consumes 属性指定的类型匹配。这是最常见的问题原因。字符编码: 在发送和接收数据时,始终指定字符编码 (例如 UTF-8),以避免乱码问题。依赖: 如果使用 HttpClient,请确保你的项目使用了 Java 11 或更高版本。异常处理: 在实际应用中,需要添加适当的异常处理代码,以处理网络连接、IO 错误等问题。调试: 使用网络抓包工具 (例如 Wireshark) 可以帮助你分析 HTTP 请求和响应,从而更好地调试问题。

通过本文档的学习,你应该能够使用 Java 客户端成功向 Spring Boot 服务器发送 POST 请求。 选择 HttpURLConnection 或 HttpClient 取决于你的项目需求和 Java 版本。 HttpClient 提供了更简洁的 API,推荐在 Java 11+ 环境中使用。 记住,确保 Content-Type 匹配是解决问题的关键。

以上就是使用Java客户端向Spring Boot服务器发送POST请求的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/235192.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
航海王热血航线烬有什么技能 热血航线烬技能介绍
上一篇 2026年10月3日 20:06:01
点击保存时上传和新增接口的调用顺序如何优化?
下一篇 2025年12月22日 06:25:23

相关推荐

  • AMD携手武汉纺织大学计算机与人工智能学院,共启AI+纺织创新篇章

    AMD携手武汉纺织大学计算机与人工智能学院,共启AI+纺织创新篇章AMD携手武汉纺织大学计算机与人工智能学院,共启AI+纺织创新篇章AMD携手武汉纺织大学计算机与人工智能学院,共启AI+纺织创新篇章AMD携手武汉纺织大学计算机与人工智能学院,共启AI+纺织创新篇章

    今年9月14日上午,amd携手武汉纺织大学人工智能学院共建的ai+纺织联合创新中心正式揭牌。amd全球区域市场营销副总裁raymond dumbeck、大中华区市场营销副总裁纪朝晖,与武汉纺织大学党委常委、副校长姜明华教授,以及计算机与人工智能学院党委书记晏伟、院长胡新荣教授共同出席签约仪式并参与揭…

    2026年10月3日 • 用户投稿
    100
  • 我的HP笔记本电脑死机频繁发生怎么办?一步步解决方法

    我的HP笔记本电脑死机频繁发生怎么办?一步步解决方法我的HP笔记本电脑死机频繁发生怎么办?一步步解决方法我的HP笔记本电脑死机频繁发生怎么办?一步步解决方法我的HP笔记本电脑死机频繁发生怎么办?一步步解决方法

    首先运行HP硬件诊断测试排查硬件故障,接着进入安全模式卸载可疑软件并禁用自启项,然后通过sfc和chkdsk命令修复系统文件与磁盘错误,同时清理内部灰尘改善散热,最后更新或回滚显卡等关键驱动程序以提升系统稳定性。 如果您尝试访问某个网站,但服务器无法访问,则可能是由于服务器 IP 地址无法解析。以下…

    2026年10月3日 • 用户投稿
    000
  • composer的vendor/bin目录是做什么用的?如何管理其中的可执行文件?

    composer的vendor/bin目录是做什么用的?如何管理其中的可执行文件?composer的vendor/bin目录是做什么用的?如何管理其中的可执行文件?composer的vendor/bin目录是做什么用的?如何管理其中的可执行文件?composer的vendor/bin目录是做什么用的?如何管理其中的可执行文件?

    vendor/bin 是 Composer 自动生成的目录,用于存放项目依赖提供的可执行命令脚本。当安装的包在 composer.json 中声明了 “bin” 字段(如 PHPUnit、PHP-CS-Fixer 等),Composer 会将其指定的脚本复制或软链接到 ven…

    2026年10月3日 • 用户投稿
    100
  • ToshibaSatellite处理蓝屏代码0x00000024的教程说明。

    ToshibaSatellite处理蓝屏代码0x00000024的教程说明。ToshibaSatellite处理蓝屏代码0x00000024的教程说明。ToshibaSatellite处理蓝屏代码0x00000024的教程说明。ToshibaSatellite处理蓝屏代码0x00000024的教程说明。

    蓝屏错误0x00000024通常由硬盘问题、驱动冲突或系统文件损坏引起,可依次通过安全模式检查磁盘错误、更新或回滚存储控制器驱动、运行SFC和DISM修复系统文件、使用CrystalDiskInfo检测硬盘健康状态来解决,若硬盘存在物理故障应备份数据并更换硬盘。 如果您的Toshiba Satell…

    2026年10月3日 • 用户投稿
    000
  • VivoBook系列Asus电脑死机频繁怎么治?软件清理指南

    VivoBook系列Asus电脑死机频繁怎么治?软件清理指南VivoBook系列Asus电脑死机频繁怎么治?软件清理指南VivoBook系列Asus电脑死机频繁怎么治?软件清理指南VivoBook系列Asus电脑死机频繁怎么治?软件清理指南

    首先清理系统垃圾并开启存储感知,接着卸载可疑软件,再运行病毒扫描,修复系统文件与更新驱动,最后使用360安全卫士体检优化,可解决VivoBook死机问题。 如果您尝试使用VivoBook系列的华硕电脑,但设备频繁出现死机情况,甚至仅任务栏无响应,这很可能是由系统或软件问题引起的。以下是解决此问题的步…

    2026年10月3日 • 用户投稿
    000
  • 解决Android TapTargetView集成中的符号解析错误

    解决Android TapTargetView集成中的符号解析错误解决Android TapTargetView集成中的符号解析错误解决Android TapTargetView集成中的符号解析错误解决Android TapTargetView集成中的符号解析错误

    本文旨在解决Android开发中集成TapTargetView库时常见的“Unable to resolve symbol”错误。该问题通常由依赖版本不匹配引起,通过指定正确的库版本(如1.13.3)即可有效解决。文章将提供详细的配置步骤和通用排查方法,帮助开发者顺利引入并使用TapTargetVi…

    2026年10月3日 • 用户投稿
    000
  • PPT幻灯片中怎么插入和编辑图表_PPT图表插入与数据可视化设置步骤

    PPT幻灯片中怎么插入和编辑图表_PPT图表插入与数据可视化设置步骤PPT幻灯片中怎么插入和编辑图表_PPT图表插入与数据可视化设置步骤PPT幻灯片中怎么插入和编辑图表_PPT图表插入与数据可视化设置步骤PPT幻灯片中怎么插入和编辑图表_PPT图表插入与数据可视化设置步骤

    插入图表可提升PPT信息传达效率。先打开PPT,点击“插入”选项卡中的“图表”,选择合适类型并确认,系统自动弹出Excel数据表供编辑,修改数据后关闭表格即可完成插入;双击图表可重新调整数据范围或更改图表类型,通过“图表设计”和“格式”选项卡优化样式、标题、图例及配色;为增强可视化效果,应保持简洁、…

    2026年10月3日 • 用户投稿
    000
  • OriginPC电脑黑屏问题如何处理?高端定制机故障诊断指南分享

    OriginPC电脑黑屏问题如何处理?高端定制机故障诊断指南分享OriginPC电脑黑屏问题如何处理?高端定制机故障诊断指南分享OriginPC电脑黑屏问题如何处理?高端定制机故障诊断指南分享OriginPC电脑黑屏问题如何处理?高端定制机故障诊断指南分享

    Origin PC电脑黑屏时电源灯亮,可能是显卡驱动、系统文件损坏或硬件冲突导致,需依次检查外部设备、显示器连接、电源供应,尝试BIOS重置、安全模式启动、更换显卡或内存条,若无效可重装系统,并联系Origin PC官网、客服电话、邮件支持或社区寻求帮助,平时应定期更新驱动、使用正版系统、安装杀毒软…

    2026年10月3日 • 用户投稿
    000
  • composer中的suggests有什么用_解析composer.json中suggests字段的用途

    composer中的suggests有什么用_解析composer.json中suggests字段的用途composer中的suggests有什么用_解析composer.json中suggests字段的用途composer中的suggests有什么用_解析composer.json中suggests字段的用途composer中的suggests有什么用_解析composer.json中suggests字段的用途

    suggests 是 composer.json 中的可选提示功能,用于推荐非必需的扩展包以增强项目功能,如日志、数据库操作或命令行工具支持;执行 composer install 或 update 时会显示建议列表,但不会自动安装这些包;与 require(必装)和 require-dev(开发依…

    2026年10月3日 • 用户投稿
    000
  • ChatGPT 可以下单买买买了

    ChatGPT 可以下单买买买了ChatGPT 可以下单买买买了ChatGPT 可以下单买买买了ChatGPT 可以下单买买买了

    终于,chatgpt 开始在电商赛道闭环了。 同样一个需求:你能帮我为朋友找到一份很棒的乔迁礼物吗?可能是手工制作的陶瓷餐具,白色和棕色的,价格在 100 美元以下。 以前可能只是给出相关建议或推荐(可望不可即),现在却能一步到位下单支付(直接在 ChatGPT 买买买)。 没错,这就是 OpenA…

    2026年10月3日 • 用户投稿
    000
  • VSCode如何配置C++开发环境 VSCode搭建C++项目的完整教程

    VSCode如何配置C++开发环境 VSCode搭建C++项目的完整教程VSCode如何配置C++开发环境 VSCode搭建C++项目的完整教程VSCode如何配置C++开发环境 VSCode搭建C++项目的完整教程VSCode如何配置C++开发环境 VSCode搭建C++项目的完整教程

    首先安装c++++编译器和调试器,windows用户推荐mingw-w64并配置环境变量,macos用户安装xcode command line tools,linux用户通过包管理器安装gcc/g++和gdb;2. 安装vscode并添加c/c++扩展及可选的c/c++ extension pac…

    2026年10月3日 • 用户投稿
    600
  • 苹果15如何实现双微信功能

    一、利用第三方应用实现双开 想要在苹果15上运行两个微信,可以尝试从App Store中搜索并安装类似“微信分身版”这样的第三方工具。需要注意的是,这些应用并非腾讯官方推出,存在一定的使用风险,例如可能触发微信的安全机制导致账号被限制或封禁。安装完成后,打开该应用并按照指引完成第二个微信账号的登录。…

    2026年10月3日
    000
  • 宏碁电脑开机要按F1因CPU风扇错误报警关闭风扇检测解决

    首先检查CPU风扇是否正常转动及连接是否牢固,清理灰尘后若仍报错,进入BIOS将CPU风扇检测设为忽略或关闭,保存设置即可消除F1提示。 宏碁电脑开机提示CPU风扇错误,要求按F1才能进入系统,这通常是因为主板在启动自检时未能正确读取到CPU风扇的转速信号。虽然有时风扇实际运转正常,但系统仍会报错。…

    2026年10月3日
    100
  • JUnit 5 测试中依赖注入失败的原因及解决方案

    JUnit 5 测试中依赖注入失败的原因及解决方案JUnit 5 测试中依赖注入失败的原因及解决方案JUnit 5 测试中依赖注入失败的原因及解决方案JUnit 5 测试中依赖注入失败的原因及解决方案

    本文旨在解释 JUnit 5 测试中依赖注入失败的常见原因,并提供有效的解决方案。通过示例代码和详细说明,帮助开发者理解 JUnit 5 中构造器注入的限制,以及如何正确地初始化测试类中的依赖项,从而编写更健壮的单元测试。 在 JUnit 5 中,直接通过构造器进行依赖注入并非默认行为,这常常导致 …

    2026年10月3日 • 用户投稿
    000
  • 在没有SSH权限的虚拟主机上如何使用composer?

    在没有SSH权限的虚拟主机上如何使用composer?在没有SSH权限的虚拟主机上如何使用composer?在没有SSH权限的虚拟主机上如何使用composer?在没有SSH权限的虚拟主机上如何使用composer?

    在无SSH权限的虚拟主机上使用Composer可通过本地或在线方式预生成依赖。1. 在本地安装Composer,创建composer.json,运行composer install生成vendor目录,并通过FTP上传vendor、composer.json和composer.lock文件至服务器。…

    2026年10月3日 • 用户投稿
    100
  • 贾跃亭:FX Super One试制顺利 将携新车亮相火人节

    8月25日,faraday future(ff)创始人贾跃亭发布了第17期周报。周报中提到,fx super one的试制进展顺利,并计划于下周携新车亮相火人节。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ FX Super One 据了…

    2026年10月3日
    100
  • AcerSwift笔记本处理蓝屏代码0x00000078的步骤指南。

    AcerSwift笔记本处理蓝屏代码0x00000078的步骤指南。AcerSwift笔记本处理蓝屏代码0x00000078的步骤指南。AcerSwift笔记本处理蓝屏代码0x00000078的步骤指南。AcerSwift笔记本处理蓝屏代码0x00000078的步骤指南。

    蓝屏错误0x00000078通常因系统文件或驱动加载失败引起,可依次尝试安全模式诊断、运行SFC和CHKDSK修复系统与磁盘错误、更新驱动程序、执行系统还原及使用启动修复工具解决。 如果您的Acer Swift笔记本在使用过程中出现蓝屏,并显示错误代码0x00000078,这通常与系统启动时无法正确…

    2026年10月3日 • 用户投稿
    100
  • Notion AI新用户必看:5分钟上手基础写作与总结

    Notion AI新用户必看:5分钟上手基础写作与总结Notion AI新用户必看:5分钟上手基础写作与总结Notion AI新用户必看:5分钟上手基础写作与总结Notion AI新用户必看:5分钟上手基础写作与总结

    notion ai可通过掌握指令系统、使用模板、迭代优化、善用总结功能及认识局限性来快速生成高质量内容。首先熟悉基础指令并自定义以适应不同写作风格;其次从预设模板入手了解应用场景;随后对ai生成内容进行多次修改优化;利用ai总结功能提取关键信息;同时注意核实事实避免错误。针对博客写作,需结合选题研究…

    2026年10月3日 • 用户投稿
    000
  • win11连接不上蓝牙耳机怎么办_蓝牙设备连接失败修复指南

    win11连接不上蓝牙耳机怎么办_蓝牙设备连接失败修复指南win11连接不上蓝牙耳机怎么办_蓝牙设备连接失败修复指南win11连接不上蓝牙耳机怎么办_蓝牙设备连接失败修复指南win11连接不上蓝牙耳机怎么办_蓝牙设备连接失败修复指南

    首先运行系统内置蓝牙疑难解答,若无效则检查并启动蓝牙支持服务,接着更新或重新安装蓝牙驱动程序,最后重置蓝牙适配器并重新配对设备。 如果您尝试在Windows 11系统中连接蓝牙耳机,但设备无法被发现或连接失败,可能是由于驱动问题、服务未启动或设置错误导致。以下是针对此问题的多种解决方案。 本文运行环…

    2026年10月3日 • 用户投稿
    100
  • Java字符串压缩算法优化:处理末尾字符序列的策略

    本文深入探讨了字符串压缩算法,旨在将连续重复字符替换为字符加计数。我们将分析在实现此类算法时常见的末尾字符序列处理遗漏问题,并提供一个优化后的Java解决方案,确保所有字符序列都能被正确压缩,从而实现如“abbbccccc”到“ab3c4”的准确转换。 理解字符串压缩需求 字符串压缩是一种常见的数据…

    2026年10月3日
    300

发表回复

登录后才能评论
关注微信