0

所以我通过 RestTemplate Link 使用来自这个 URL 的 JSON 响应:

"https://s3-ap-southeast-1.amazonaws.com/he-public-data/productdf38641.json"

我的产品 POJO:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProductModel {

    private String uniq_id;
    private String product_name;
    private int retail_price;
    private int discounted_price;
    private List<String> image;
    private String description;
    private String product_rating;
    private String overall_rating;
    private String brand;
}

现在,当我使用 restTemplate 将这个 Json 对象数组存储在 ProductModel [] 中时。

ProductModel[] books = restTemplate.getForObject(URL, ProductModel[].class);

我收到此错误

Caused by: org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.schema.testing.domain.ProductModel] and content type [binary/octet-stream]

当我通过邮递员通过 POST 请求将相同的 JSON 对象传递到 REST 端点时。它能够处理该请求。这都是与内容类型相关的游戏吗?请帮忙,我接下来要做什么。我不知道 。任何帮助表示赞赏

4

1 回答 1

0

我想这个例外有一个解决方案。试试看,让我知道结果。
没有任何消息转换器可以读取您的 HTTP 响应,因此它会失败并出现异常。这里的主要问题是content-type,为了克服这个问题,您可以引入自定义消息转换器。并为各种响应注册它(即忽略响应内容类型标头)。像这样

List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();        
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

// We are making this converter to process any kind of response, not only application/*json, which is the default behaviour
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));        
messageConverters.add(converter);  
restTemplate.setMessageConverters(messageConverters); 
于 2021-09-25T13:37:16.387 回答