在 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/