RestTemplate - Put - 错误的接受标题 - 需要解决方法

时间:2012-10-24 16:37:59

标签: android resttemplate

我一直在使用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格式的主体?

1 个答案:

答案 0 :(得分: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 );