gpt4 book ai didi

java - 没有找到适合响应类型的 HttpMessageConverter

转载 作者:IT老高 更新时间:2023-10-28 13:05:32 26 4
gpt4 key购买 nike

使用 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 的角度来看,使用 RestTemplate 注册的 HttpMessageConverter 实例都不能将 text/html 内容转换为 ProductList 对象。感兴趣的方法是 HttpMessageConverter#canRead(Class, MediaType)。以上所有的实现都返回 false,包括 Jaxb2RootElementHttpMessageConverter

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

如果您可以控制服务器响应,请将其修改为将 Content-type 设置为 application/xmltext/xml 或与 application/*+xml 匹配的东西。

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

关于java - 没有找到适合响应类型的 HttpMessageConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21854369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com