首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RestTemplate使用率

RestTemplate使用率
EN

Stack Overflow用户
提问于 2013-02-27 16:39:02
回答 1查看 6.6K关注 0票数 3

我正在尝试使用RestTemplate来制作一个PUT。由于某些原因,我无法重现我使用curl创建的PUT,它通过时没有任何问题。

下面是我的curl调用,它成功并返回200:

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

这是试图复制这个curl调用的Java代码。在我的例子中,这段代码将抛出status =406的HttpClientErrorException

代码语言:javascript
复制
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版本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-27 19:41:38

阿格尔,太愚蠢了。缺少的部分是Accept报头。显然,curl默认添加了Accept: */*。可能是端点实现需要正确的Accept头。添加这一行解决了这个问题:

代码语言:javascript
复制
headers.add("Accept", "*/*");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15107494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档