当前位置: 首页 > 知识库问答 >
问题:

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

叶衡虑
2023-03-14

我正在编写一个客户端来使用RESTful服务。我被要求发送键,值对的请求,他们建议我为此使用地图。我调用的RESTful服务只接受JSON,我的客户端将Java。它实际上是现有企业EJB项目的一部分。

我已经编写了一个客户端,并且能够成功调用RESTful服务。事实上,如果我以字符串(JSON格式)发送请求,那么我甚至会得到一个响应。但我希望避免将映射转换为JSON格式字符串,然后在请求中发送出去的手动工作。

我已经将Content-Type设置为应用程序/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].

我检查了HttpMessageConverters,我有我的restTemboard和我找到MappingJacksonHttpMessageConverters。代码中是否要求我使用上述转换器?

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

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

共有1个答案

麹鸿煊
2023-03-14

错误消息说没有找到适合请求类型的HttpMessageConzer,所以只需将带有MediaTypeMappingJackson2HttpMessageConzer添加到RestTem板

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); 
coverter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON); 
restTemplate.getMessageConverters().add(0, converter)
 类似资料:
  • 问题内容: 我正在编写一个使用RESTful服务的客户端。我需要以键,值对的形式发送请求,他们建议我为此使用Map。我正在调用的RESTful服务将仅接受JSON,而我的客户端将使用Java。实际上,它将成为现有企业EJB项目的一部分。 我已经编写了一个客户端,并且能够成功调用RESTful服务。实际上,如果我以String(JSON格式)发送请求,那么我什至会得到响应。但是我想避免将Map转换为

  • 使用curl命令: 我收到一个JSON响应: 我把响应保存在一个txt文件里然后用jackson解析一切正常 我假设我应该使用RestTemplate得到相同的结果,但事实并非如此 我得到了一个错误 我尝试设置contentType: 但后来我发现了一个编译错误 我还尝试在Jackson消息转换器中添加一个 但是后来我得到了这个错误: 我还尝试添加了这个类 但是我得到了错误:

  • 我想实现使用Spring Cloud的客户端请求。我试过这个: 外国客户: 请求DTO: 控制器: 外型: 但是当我发出POST请求时,我得到了例外: 你知道我怎样才能解决这个问题吗?

  • 我正在写一个Springmvc应用程序(Spring新手),它必须调用Rest服务。我有其余的服务部署在我的VM(weblogic 10.3.6在Linux)和我写的应用程序是在我的本地笔记本电脑weblogic(10.3.6在Windows 8.1)。 当我尝试调用rest服务时,restservice应用程序的请求正常,但响应失败,并显示以下消息 我正在初始化控制器中的其余客户端 在实际的客户

  • 我正在打一个服务来查找一个人的详细信息,响应是xml格式的,如下所示: 我正在使用Spring RestTempate并将响应映射到以下POJO, 我使用rest模板调用服务, 但我一直得到异常,org.springframework.web.client.RestClientExcture:无法提取响应:没有找到适合的HttpMessageConzer响应类型[类[Lcom.cdk.datalo

  • 我试图发送一个POST请求到REST服务使用REST模板,但得到下面的错误 RestClientException:无法写入请求:找不到适合请求类型[xxx.query.XBrainQueryRequest]和内容类型[application/json]的HttpMessageConverter。 我的XBrainQueryRequest课程如下 有人能解释我为什么会出错以及如何解决它吗?我对这些