找不到适合响应类型的HttpMessageConverter
使用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@34649ee4org.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-type
到application/xml
,text/xm
l或东西匹配application/*+xml
。
如果你不控制服务器响应,则需要编写和注册自己的HttpMessageConverter(可以扩展Spring类,see AbstractXmlHttpMessageConverter
及其子类)并可以读取和转换text/html
。
以上是 找不到适合响应类型的HttpMessageConverter 的全部内容, 来源链接: utcz.com/qa/430527.html