2014-12-01 10 views
0

WS.url 호출에서 가치를 얻는 데 큰 어려움이 있습니다. 내가재생 프레임 워크/스칼라에서 WS 호출의 결과를 얻는 방법은 무엇입니까?

Console.println("X: "+x) 

을하려고하면

val x =WS.url("https://www.google.com/recaptcha/api/siteverify? 
secret=XX&response="+captcha).get().map { 
response =>response.body} 

가 나는 값 예상하지만,하지 않습니다 내가 맵 함수 내에서 값 println(response.body)을 인쇄 할 때

X: [email protected] 

하지만, 그것은 잘 작동합니다.

나는 또한 playframework 자습서를 시도했지만 동일한 결과가 나타납니다.

그래서 GET 호출 결과를 변수에 어떻게 할당 할 수 있습니까?

+0

결과는 WS 호출은 미래 [WSResponse]이므로 차단하지 않는 한 값을 매핑하지 않고 직접 값을 가져올 수 없습니다. 어떤 맥락에서 당신이 그것을 필요로합니까? –

+0

입력 유효성 검사를 위해 JSON에서 bool 값이 필요합니다. – user1877249

답변

1

쿼리 문자열을 조합하지 말고 withQueryString 메서드를 사용하십시오.

블로킹과 논 블로킹의 두 가지 해결책이 있습니다. 블로킹은 HTTP 호출이 완료 될 때까지 요청의 스레드가 유휴 상태임을 의미합니다. 비 차단이 선호되며 Play에 Future과 함께 요청을 완료 할 수 있습니다. 컨트롤러에 Action 대신 Action.async을 사용하기 만하면됩니다.