【问题标题】:RestTemplate - Put - Wrong Accept Header - Workaround neededRestTemplate - 放置 - 错误的接受标头 - 需要解决方法
【发布时间】:2012-10-24 16:37:59
【问题描述】:

我使用 RestTemplate 有一段时间了,一直很满意!

但现在很糟糕。

我以前是这样做的:

        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(new GsonHttpMessageConverter());
        restTemplate.put(URI, object);

通常我的服务器以 Ruby 方式接受 URL 中的格式:resource.json

但是现在我正在使用一个不再这样做的服务器。我需要使用 Header 来处理格式。

一切正常,restTemplate 将 content-type 设置为 application/json 但不要设置 Accept 标头。所以我的服务器发出 406 错误,因为默认格式是 HTML,而且他不呈现 html。

那么,是否有人可以将内容和接受标头都放入 json 并添加 json 格式的正文?

【问题讨论】:

  • 尝试使用 RestTemplate 中的 headForHeaders 方法。它返回一个地图,所以尝试添加接受标头
  • 另外,看看这个issue
  • 让我知道它是否有效,我会将其移至答案
  • 它确实有效!去找答案;)
  • 这是我的代码示例:RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().add(new GsonHttpMessageConverter()); HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setContentType(MediaType.APPLICATION_JSON); requestHeaders.setAccept(Arrays.asList(new MediaType[] {MediaType.APPLICATION_JSON})); HttpEntity<T> requestEntity = new HttpEntity<T>((T) parameter, requestHeaders); restTemplate.exchange(URI , HttpMethod.PUT, requestEntity, null );

标签: android resttemplate


【解决方案1】:

您可以从 RestTemplate 对象中获取标头并将您需要的内容添加到其中(因为标头只不过是一张地图)。

这是 Dam 运行后提供的示例代码:

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new GsonHttpMessageConverter()); 
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
requestHeaders.setAccept(Arrays.asList(new MediaType[] {MediaType.APPLICATION_JSON}));
HttpEntity<T> requestEntity = new HttpEntity<T>((T) parameter, requestHeaders);  
restTemplate.exchange(URI , HttpMethod.PUT, requestEntity, null );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2017-03-02
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    相关资源
    最近更新 更多