gpt4 book ai didi

java - 使用 Spring RestTemplate for Android 发出经过身份验证的 POST 请求

转载 作者:IT老高 更新时间:2023-10-28 13:02:40 25 4
gpt4 key购买 nike

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

所有 GET 请求都以这种方式工作得很好,但我不知道如何完成经过身份验证的 POST 请求。 postForObjectpostForEntity 处理 POST,但没有简单的方法来设置 Authentication header 。

所以对于 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(),因为它从不发送自定义 header ,而且我看不到如何使用 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);

ResponseEntity<MyModel> response = restTemplate.exchange("/api/url", HttpMethod.POST, httpEntity, MyModel.class);

关于java - 使用 Spring RestTemplate for Android 发出经过身份验证的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com