【发布时间】:2012-05-08 15:46:07
【问题描述】:
我有一个 RESTful API,我正在尝试通过 Android 和 RestTemplate 进行连接。所有对 API 的请求都通过 HTTP Authentication 进行身份验证,通过设置 HttpEntity 的标头,然后使用 RestTemplate 的 exchange() 方法。
所有 GET 请求都以这种方式工作得很好,但我无法弄清楚如何完成经过身份验证的 POST 请求。 postForObject 和 postForEntity 处理 POST,但没有简单的方法来设置 Authentication 标头。
所以对于 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 请求的最简单方法是什么?
【问题讨论】:
-
requestHeaders.setAuthorization(httpAuthentication)..它的未定义..没有setAuthorization之类的方法..
标签: java android spring rest resttemplate