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

如何在Java Spring中用RestTemplate发送原始值PUT请求

在Spring中用RestTemplate发送PUT请求传递原始值

这事儿我之前折腾过,其实很容易搞定!你现在的问题主要是原来的代码没带请求体,而且Content-Type设置的是JSON,但你要传的是像foobar这种原始纯文本值对吧?咱们只需要调整createHttpEntity方法,让它能携带原始请求体,再对应修改Content-Type就可以了。

核心改动点

  • 给createHttpEntity加个参数,用来接收你要发送的原始字符串
  • 根据你要发送的内容类型调整Content-Type(比如纯文本就用TEXT_PLAIN,如果是JSON格式的单个值就保留APPLICATION_JSON但包装一下)

代码实现

场景1:发送纯文本原始值(比如foobar)

先修改你的createHttpEntity方法,让它能接收并携带请求体:

public HttpEntity<String> createHttpEntity(String rawBody) {
    HttpHeaders headers = new HttpHeaders();
    headers.set(Constants.AUTHORIZATION, Constants.BEARER + Base64.getEncoder().encodeToString(token.getBytes()));
    headers.set(Constants.APP_ID_NAME, Constants.APP_ID);
    // 这里设置为纯文本类型,对应Postman里raw选Text的情况
    headers.setContentType(MediaType.TEXT_PLAIN);
    // 把原始字符串作为请求体传入HttpEntity
    return new HttpEntity<>(rawBody, headers);
}

然后调用exchange的时候,直接传入你要发送的原始值:

RestTemplate restTemplate = new RestTemplate();
// 这里的"foobar"就是你要发送的原始纯文本值
ResponseEntity<String> response = restTemplate.exchange(
        "https://foobar.com", 
        HttpMethod.PUT, 
        createHttpEntity("foobar"), 
        String.class
);

场景2:发送JSON格式的原始单个值(比如"foobar")

如果目标接口要求的raw内容是JSON格式的单个值(需要带引号),那可以保留APPLICATION_JSON的Content-Type,只需要把原始值包装成JSON字符串:

public HttpEntity<String> createHttpEntity(String rawJsonValue) {
    HttpHeaders headers = new HttpHeaders();
    headers.set(Constants.AUTHORIZATION, Constants.BEARER + Base64.getEncoder().encodeToString(token.getBytes()));
    headers.set(Constants.APP_ID_NAME, Constants.APP_ID);
    headers.setContentType(MediaType.APPLICATION_JSON);
    // 把原始值包装成合法的JSON字符串(比如把foobar变成"foobar")
    return new HttpEntity<>(String.format("\"%s\"", rawJsonValue), headers);
}

这样调用后,就和你在Postman里选raw、格式选JSON,然后输入"foobar"的效果完全一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:17:11