2015-01-29 5 views
0

스프링 부트 응용 프로그램에서 YQL에 대한 REST 호출을 만들려고합니다. 'format = json'으로 설정해도이 호출은 'application/javascript'를 반환합니다.format = json이 요청 된 경우에도 YQL이 application/javascript를 반환합니다.

org.springframework.web.client.RestClientException : 응답을 추출 할 수 없습니다 : 응답 유형에 적합하지 않음 HttpMessageConverter가 응답 유형으로 발견되었습니다. [클래스 com.dilteam.research.YqlQueryResult] 및 콘텐트 유형 [프로그램/스크립트 캐릭터 = UTF-8 여기서

메소드 (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; 
} 

무엇 내가 틀렸어?

답변

1

RestTemplateapplication/javascript 응답을 읽는 방법을 알지 못합니다. application/javascript 실제로 JSON이라고 가정하면, 당신은에 적절하게 구성된 컨버터를 추가하여 문제를 해결할 수 있습니다 RestTemplate :

+0

새로운 MediaType에가 ("응용 프로그램/자바 스크립트") 작동하지 않았다, 그래서 변경

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); converter.setSupportedMediaTypes(Arrays.asList(new MediaType("application", "javascript"))); restTemplate.getMessageConverters().add(javascriptConverter); 
: 새로운 MediaType ("application", "javascript") 점점 : 원인 : com.fasterxml.jackson.core.JsonParseException : 예상치 못한 문자 ('/'(코드 47)) : 비표준 코멘트일까요? ('ALLOW_COMMENTS'기능이 파서 용으로 활성화되어 있지 않으므로 인식되지 않음) 반환되는 JSON은 다음과 같습니다./**/v ({ "query": {..... – DilTeam

+0

'COMMENTS'문제를 해결하려면 , 다음 줄을 추가했지만 이제는 Null 개체를 반환합니다. converter.getObjectMapper(). configure (JsonParser.Feature.ALLOW_COMMENTS, true); – DilTeam

+0

이유는 'Null'을 얻는 이유는 'yahoo.finance.quotes '는 YQL에서 더 이상 사용할 수 없습니다. 이상하게 야후!가 정책을 변경했습니다.이 문제를 마무리하십시오. 포인터에 대한 Andy에게 감사드립니다. – DilTeam