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);
我正在尝试在 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);