YQL returns application/javascript 即使请求格式=json

YQL returns application/javascript even when format=json is requested

我正在尝试在 Spring 引导应用程序中对 YQL 进行 REST 调用。即使我设置 'format=json',调用 returns 'application/javascript' 也会导致此消息:

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

这是方法 (processTicker) 和关联的 class (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);