最佳答案
我有一个 RESTful API,我试图通过 Android 和 RestTemplate 连接。通过设置 HttpEntity 的头部,然后使用 RestTemplate 的 exchange()
方法,对 API 的所有请求都使用 HTTP 身份验证进行身份验证。
所有 GET 请求都以这种方式工作得很好,但是我不知道如何完成经过身份验证的 POST 请求。postForObject
和 postForEntity
处理 POST,但没有简单的方法来设置身份验证标头。
因此,对 GET 来说,这种方法非常有效:
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);
但是 POST 显然不能与 exchange()
一起工作,因为它从来不发送定制的头文件,我不知道如何使用 exchange()
设置请求体。
从 RestTemplate 发出经过身份验证的 POST 请求的最简单方法是什么?