【问题标题】:YQL returns application/javascript even when format=json is requested即使请求了 format=json,YQL 也会返回 application/javascript
【发布时间】:2015-03-28 03:50:25
【问题描述】:

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

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

这里是方法(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;
}

我做错了什么?

【问题讨论】:

    标签: javascript json spring spring-boot yql


    【解决方案1】:

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

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

    【讨论】:

    • new MediaType("application/javascript") 不起作用,所以我改为: new MediaType("application", "javascript") 现在得到: 由:com.fasterxml.jackson 引起。 core.JsonParseException:意外字符('/'(代码 47)):可能是(非标准)注释? (由于未为解析器启用功能“ALLOW_COMMENTS”,因此无法识别为一个)返回的 JSON 具有以下内容:/**/v({"query":{.....
    • 为了解决“COMMENTS”问题,添加了以下行,但现在它返回一个 Null 对象:converter.getObjectMapper().configure(JsonParser.Feature.ALLOW_COMMENTS, true);
    • 我得到 'Null' 的原因是表 'yahoo.finance.quotes' 在 YQL 上不再可用。诡异的。可能是雅虎!改变了它的政策!关闭这个问题。感谢安迪的指点。
    猜你喜欢
    • 2015-10-17
    • 2017-08-04
    • 2015-01-29
    • 2021-02-12
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多