用于发布带有自定义头和请求对象的请求的Spring RestTemplate

2022-08-21 00:00:00 rest spring java resttemplate spring-mvc

在Spring RestTemplate中,有一种方法可以将自定义头与POST请求对象一起发送。我已经尝试了可用的exchange方法。我们似乎可以将键值对与自定义头一起发送,但不能发送附加到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);

有人知道这种情况吗?或者这是我不可能尝试去做的事情?


解决方案

可以,如果使用多值映射头而不是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);

Boolan.class只是因为我的控制器在此终结点返回Boolean(可以是任何值)

祝编码好运!

相关文章