java - Spring RestTemplate 使用自定义 header 和请求对象发布请求

标签 java spring rest spring-mvc resttemplate

在 Spring RestTemplate 中有一种方法可以将自定义 header 与 POST 请求对象一起发送。我已经尝试了可用的 exchange 方法。似乎我们可以将键值对与自定义​​ header 一起发送,但不能将请求对象本身附加到 HttpEntity。 以下代码说明了尝试,它似乎是 400 BadRequest 用于服务器。

    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity<?> httpEntity = new HttpEntity<Object>(requestDTO, requestHeaders);

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.exchange(URL, HttpMethod.POST, httpEntity, SomeObject.class);

有人知道这种情况吗?还是我试图做的事情是不可能的?

最佳答案

是的,如果使用 MultiValueMap header 而不是 HttpHeaders 是可能的

例子:

MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Authorization", "Basic " + base64Creds);
headers.add("Content-Type", "application/json");

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

HttpEntity<ObjectToPass> request = new HttpEntity<ObjectToPass>(objectToPassInstance, headers);

restTemplate.postForObject(urlPost, request, Boolean.class);

Boolean.class 只是因为我的 Controller 在此端点返回 boolean 值(可以是任何东西)

祝你编码顺利!

关于java - Spring RestTemplate 使用自定义 header 和请求对象发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723183/

相关文章:

angularjs - Angular 在使用资源时不使用 cookie

java - maven:依赖编译错误

java - 我们可以有一个工厂类作为 spring bean 并有一个工厂方法根据条件返回多个 spring bean 吗?

java - 如何使用java注释设置类属性的默认值

java - ActiveMQ分布式事务+扩展

javascript - Express Node JS POST。如何在不使用 url 参数的情况下向 req.body 添加值

java - Soap:从http到https的地址位置

java - Weblogic 12.1.3 压缩 gzip 的配置

java - Spring 交易未提交

node.js - NodeJS API 通过 SFTP 同步上传的文件