You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Rest Controller接收多行String Post请求问题咨询

解决Java Rest Controller无法捕获多行字符串的问题

我来帮你搞定这个问题!你现在遇到的情况,大概率是请求的Content-Type设置不对,或者Spring解析请求体的方式导致只拿到最后一行。咱们一步步来解决:

第一步:优化Controller代码(更简洁可靠)

其实不用HttpEntity<String>,直接用@RequestBody注解绑定请求体字符串会更直观,而且能确保拿到完整的多行内容。修改后的代码如下:

@PostMapping
public String postData(@RequestBody String requestBody) {
    log.info("In RatingController Post Data");
    log.info(requestBody); // 现在能打印完整的多行内容了
    return "Return";
}

第二步:确保请求端设置正确的Content-Type

这是关键!如果你的请求没有指定Content-Type: text/plain,Spring可能会把请求体当成表单数据来解析,导致换行被过滤或者只保留最后一行。

举几个常见场景的设置方式:

  • Postman/ApiFox等工具:选择Body的「Raw」格式,然后在下拉框选「Text」,直接输入多行内容发送即可(工具会自动帮你设置Content-Type为text/plain)。
  • Java代码发送(比如RestTemplate):手动设置请求头的Content-Type:
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN); // 必须设置这个
String multiLineText = "第一行内容\n第二行内容\n第三行内容";
HttpEntity<String> requestEntity = new HttpEntity<>(multiLineText, headers);
String response = restTemplate.postForObject("http://your-controller-url", requestEntity, String.class);

如果你坚持要用HttpEntity

那也要保证请求的Content-Type是text/plain,Spring就能正确把整个请求体注入到HttpEntity的body里,不会丢失换行和多行内容。

试一下上面的方法,应该就能捕获到完整的多行字符串啦!

内容的提问来源于stack exchange,提问作者BrownTownCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:56:42