YQL 返回 application/javascript,即使请求 format=json



我正在尝试在Spring Boot应用程序中对YQL进行REST调用。 即使我设置了"format=json",调用也会返回"application/javascript",这会导致以下消息:

org.springframework.web.client.RestClientException: 无法提取响应:找不到适合响应类型 [class com.dilteam.research.YqlQueryResult] 和内容类型 [application/javascript;charset=utf-8] 的 HttpMessageConverter。

以下是方法(processTicker)和相关类(YqlQueryResult):

public void processTicker(String ticker) {
    RestTemplate restTemplate = new RestTemplate();
    String query = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%3D'YHOO'&format=json&callback=?";
    YqlQueryResult qr = restTemplate.getForObject(query, YqlQueryResult.class);
    System.out.println("result" + qr.results);
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class YqlQueryResult {
    public String results;
}

我做错了什么?

您的RestTemplate不知道如何阅读application/javascript响应。假设application/javascript实际上是 JSON,您可以通过向RestTemplate添加适当配置的转换器来解决问题:

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(Arrays.asList(new MediaType("application", "javascript")));
restTemplate.getMessageConverters().add(javascriptConverter);

最新更新