java – 使用Spring RestTemplate for Android进行身份验证的POST请求

我有一个RESTful API,我试图通过Android和RestTemplate连接。对API的所有请求都通过HTTP身份验证进行身份验证,通过设置HttpEntity的头文件,然后使用RestTemplate的exchange()方法。

所有GET请求以这种方式工作得很好,但是我无法弄清楚如何完成经过身份验证的POST请求。 postForObject和postForEntity处理POST,但没有简单的方法设置验证头。

所以对于GETs,这很有用:

HttpAuthentication httpAuthentication = new HttpBasicAuthentication("username", "password");
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAuthorization(httpAuthentication);

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

MyModel[] models = restTemplate.exchange("/api/url", HttpMethod.GET, httpEntity, MyModel[].class);

但是,POSTs显然不能与exchange()一起使用,因为它不会发送自定义的头文件,我看不到如何使用exchange()设置请求体。

从RestTemplate进行身份验证的POST请求最简单的方法是什么?

最佳答案
确定答案。 exchange()是最好的方式。奇怪的是,HttpEntity类没有setBody()方法(它有getBody()),但仍然可以通过构造函数设置请求体。

// Create the request body as a MultiValueMap
MultiValueMap<String, String> body = new LinkedMultiValueMap<String, String>();     

body.add("field", "value");

// Note the body object as first parameter!
HttpEntity<?> httpEntity = new HttpEntity<Object>(body, requestHeaders);

MyModel model = restTemplate.exchange("/api/url", HttpMethod.POST, httpEntity, MyModel.class);

转载注明原文:java – 使用Spring RestTemplate for Android进行身份验证的POST请求 - 代码日志