java – HttpMessageConverter异常:RestClientException:无法写入请求:找不到合适的HttpMessageConverter

我正在编写一个客户端来使用RESTful服务.我需要在密钥,值对中发送请求,他们建议我使用Map来实现此目的.我调用的RESTful服务只接受JSON,而我的客户端将使用Java.它实际上将成为现有企业EJB项目的一部分.

我已经编写了一个客户端,并且能够成功调用RESTful服务.实际上,如果我以String(JSON格式)发送请求,那么我甚至会收到回复.但我想避免将Map转换为JSON格式字符串然后在Request中发送出来的手动工作.

我已将Content-Type设置为application / json,并创建了一个包含KeyValue对的Map.

来自客户的代码片段:

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_JSON);
headers.add(MyConstants.JWT_AUTH_TOK, restUtil.getJWTToken());

restTemplate = new RestTemplate();

ModelReqVO modVO = new ModelReqVO();
Map<String, String> dataMap = new HashMap<String, String>();
//Setting key,value into datamap (e.g. "key1", "value1")
modVO.setDataMap(dataMap);

ResponseEntity<ModelRspnsVO> result = restTemplate.postForEntity(mySrvcFN, new HttpEntity(modVO, headers), ModelRspnsVO.class);

请求(ModelReqVO)类:

public class ModelReqVO {

private HashMap<String, String> dataMap;

ModelReqVO() {
    this.dataMap = new HashMap<String, String>();
}

//getter and setter generated
}

这是我得到的例外情况 –

RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [com.mycomp.myproj.ModelReqVO] and content type [application/json].

我检查了我在restTemplate上的HttpMessageConverters,我找到了MappingJacksonHttpMessageConverter.我在代码中需要使用上述转换器的其他内容吗?

我在Spring.io论坛上找到了几个例子,但它们是关于一个需要www / form内容而不是JSON的服务.令人惊讶的是,我没有找到关于使用特定转换器将Map作为JSON发送的任何细节.

注意:代码片段可能有编译错误,我已经从我的手机输入了代码.出于安全原因,我无法在我编码的机器上使用互联网.

解决方法:

错误消息说没有为请求类型找到合适的HttpMessageConverter,因此只需将带有MediaType的MappingJackson2HttpMessageConverter添加到RestTemplate

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); 
coverter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON); 
restTemplate.getMessageConverters().add(0, converter)
上一篇:Java:使用json -SpringBoot中的“​​ @class”将json序列化为其余模板中的对象


下一篇:java-org.springframework.web.client.RestClientException:无法提取响应: