gpt4 book ai didi

java - RestTemplate 用法

转载 作者:可可西里 更新时间:2023-11-01 16:22:03 28 4
gpt4 key购买 nike

我正在尝试使用 RestTemplate 来创建一个 PUT。出于某种原因,我无法重现我使用 curl 创建的 PUT,它没有任何问题。

这是我的 curl 调用成功并返回 200:

curl https://www.exampe.com \
-X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <bearer-token>" \
-v \
-d '{"json":"object"}'

这是试图复制此 curl 调用的 Java 代码。在我的例子中,这段代码将抛出状态为 406 的 HttpClientErrorException:

boolean result = false; 
String url = "https://www.example.com";
String json = "{\"json\":\"object\"}";

RestTemplate rest = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.add("Authorization", String.format("Bearer %s", authToken));

HttpEntity<String> requestEntity = new HttpEntity<String>(json, headers);
ResponseEntity<String> responseEntity =
rest.exchange(url, HttpMethod.PUT, requestEntity, String.class);

HttpStatus status = responseEntity.getStatusCode();

这些请求之间有什么区别?如何将 Java 版本收敛到 curl 版本?

最佳答案

哎呀,太蠢了。缺少的部分是 Accept header 。显然 curl 默认添加了 Accept: */*。它可能是期望正确的 Accept header 的端点实现。添加此行解决了问题:

headers.add("Accept", "*/*");

关于java - RestTemplate 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15107494/

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