2014-10-08 1 views
0

Я использую Play Framework, и я пытаюсь сделать запрос HTTP, используя встроенную поддержку WS. Всякий раз, когда я пытаюсь сделать этот запрос HTTP в контроллер я получаю эту ошибкуPlay Framework: не удается найти символ «async»

error: cannot find symbol 

для кода

public static Result foo(){ 
    return async(//ERROR ON THIS LINE FOR `async()` 
     WS.url(GoogleStrategy.getTokenUrl).post(getTokenUrlParams).map(
      new F.Function<WSResponse, Object>() { 
        @Override 
        public Object apply(WSResponse wsResponse) throws Throwable { 
         return ok(wsResponse.asJson()); 
        } 
      } 
     ) 
    ); 
} 

Это странно, потому что во всех примерах, приведенных в документации, это швы быть правильный способ делать то, что я хочу сделать.

ответ

3

Вы почти наверняка смотрели на старую версию документации. async() больше не требуется.

Текущая версия: https://www.playframework.com/documentation/2.3.x/JavaAsync

public static Promise<Result> foo(){ 
    return WS.url(GoogleStrategy.getTokenUrl).post(getTokenUrlParams).map(
    new F.Function<WSResponse, Result>() { 
     @Override 
     public Object apply(WSResponse wsResponse) throws Throwable { 
     return ok(wsResponse.asJson()); 
     } 
    } 
); 
} 
+0

я теперь получить [эту ошибку] ​​(http://i.imgur.com/lvGAkcG.png) –

+0

Обратите внимание, что включить '' Promise как тип возвращаемого значения Мне пришлось изменить его на «F.Promise », если это помогает ... –

+0

Ryan, change 'new F.Function ()' to 'new F.Function ()' ('Object '->' Result'), и я приму ваш ответ. Было почти правильно, просто ошибка типа. –