当前位置: 首页 > 面试题库 >

找不到适合响应类型的HttpMessageConverter

翁翰
2023-03-14
问题内容

使用spring,使用以下代码:

List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
for(HttpMessageConverter httpMessageConverter : messageConverters){
  System.out.println(httpMessageConverter);
}
ResponseEntity<ProductList> productList = restTemplate.getForEntity(productDataUrl,ProductList.class);

我懂了

org.springframework.http.converter.ByteArrayHttpMessageConverter@34649ee4
org.springframework.http.converter.StringHttpMessageConverter@39fba59b
org.springframework.http.converter.ResourceHttpMessageConverter@383580da
org.springframework.http.converter.xml.SourceHttpMessageConverter@409e850a
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@673074aa
org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter@1e3b79d3
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@52bb1b26

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.mycopmany.ProductList] and content type [text/html;charset=UTF-8]

pojo的片段:

@XmlRootElement(name="TheProductList")
public class ProductList {

@XmlElement(required = true, name = "date")
private LocalDate importDate;

问题答案:

从Spring的角度来看,没有一个通过HttpMessageConverter注册的实例RestTemplate可以将text/html内容转换为ProductList对象。感兴趣的方法是HttpMessageConverter#canRead(Class, MediaType)。上述所有回报的实现false,包括Jaxb2RootElementHttpMessageConverter

由于没有人HttpMessageConverter可以读取您的HTTP响应,因此处理失败,并出现异常。

如果你能控制服务器响应,修改设置Content- typeapplication/xmltext/xml或东西匹配application/*+xml

如果您不控制服务器响应,则需要编写和注册自己的HttpMessageConverter(可以扩展Spring类,see
AbstractXmlHttpMessageConverter及其子类)并可以读取和转换text/html



 类似资料:
  • org.springframework.web.client.未知内容类型异常:无法提取响应:没有找到适合响应类型[类net.minidev.json.JSONObject]和内容类型[应用程序/json]的HttpMessageConzer endpoint Url还返回JSONObject,因此不知道为什么不匹配

  • 我在使用SpringREST模板时遇到以下错误,但我已经为json响应定义了jackson。 当我使用rest客户端查询url时,我也得到了良好的响应。 rest模板配置:

  • 使用Spring,使用以下代码: 我得到 pojo的一个片段:

  • 我试图让一个Spring CloudNetflixFaignes客户端通过HTTP获取一点JSON并将其转换为对象。我一直得到这个错误,而不是: 组织。springframework。网状物客户RestClientException:无法提取响应:未找到响应类型[class io.urig.checkout.Book]和内容类型[application/json;charset=UTF-8]的合适

  • 我是新的Spring集成和工作在Spring集成超文本传输协议模块为我的项目要求。我从出站网关作为超文本传输协议客户端发送请求。我试图向服务器发起一个请求,服务器应该用我的设置值返回消息负载。我正在将对象转换为JSON,用于发送到服务器我正在从客户端(HttpClientDemo)向服务器端的入站网关发送请求。为此,我将我的对象转换成JSON,然后将JSON字符串转换为客户端的对象,在那里执行一些

  • 我试图得到下面给出的带有SpringRest模板的响应实体。我得到了下面的错误, 代码: 我在这篇文章中尝试将媒体类型设置为Application/json。但还是一样的错误。 完整跟踪: