【发布时间】: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