使用自定义标头和请求对象将Spring RestTemplate发送到POST请求

MCF*_*MCF 17 java rest spring spring-mvc resttemplate

在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);
Run Code Online (Sandbox Code Playgroud)

谁知道这种情况?或者是我试图做的事情是不可能的?

And*_*rey 70

是的,如果使用MultiValueMap标头而不是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);
Run Code Online (Sandbox Code Playgroud)

Boolean.class只是因为我的控制器在这个端点返回布尔值(可能是任何东西)

编码祝你好运!