2015-02-10 58 views
0

ENV:Java 7中,PlayframeworkWS玩框架连接问题

家伙嗨,

我有一个问题..我在IntelliJ IDEA的创建新的播放项目。我写了一个WS叫下面的网址

http://finance.yahoo.com/connection/currency-converter-cache?date=20151006

上调用我连接异常如下

public static F.Promise<Result> getAllCurrencies(){ 

     SimpleDateFormat formater = new SimpleDateFormat("YYYYMMdd"); 
     String curl = "http://finance.yahoo.com/connection/currency-converter-cache"; 

      F.Promise<Result> holder = WS.url(curl).setTimeout(2000).setQueryParameter("date", formater.format(new Date())).get().map(new F.Function<WSResponse, Result>() { 
      @Override 
      public Result apply(WSResponse wsResponse) throws Throwable { 

       return ok(wsResponse.asJson()); 
      } 
     }); 

     return holder; 
    } 

..

[success] Compiled in 527ms 
[info] play - Application started (Dev) 
[error] play - Cannot invoke the action, eventually got an error: java.net.ConnectException: Connection timed out: no further information: finance.yahoo.com/106.10.199.10:80 to http://finance.yahoo.com/connection/currency-converter-cache?date=20150212 
[error] application - 

! @6l6kefip0 - Internal server error, for (GET) [/currencies] -> 

play.api.Application$$anon$1: Execution exception[[ConnectException: Connection timed out: no further information: finance.yahoo.com/106.10.xxx.xx:80 to http://finance.yahoo.com/connection/currency-converter-cache?date=20150212]] 
    at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.7.jar:2.3.7] 
    at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.7.jar:2.3.7] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.7.jar:2.3.7] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.7.jar:2.3.7] 
    at scala.Option.map(Option.scala:145) [scala-library-2.11.1.jar:na] 
Caused by: java.net.ConnectException: Connection timed out: no further information: finance.yahoo.com/106.10.xxx.xx:80 to http://finance.yahoo.com/connection/currency-converter-cache?date=20150212 
    at com.ning.http.client.providers.netty.NettyConnectListener.operationComplete(NettyConnectListener.java:104) ~[async-http-client-1.8.14.jar:na] 
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:431) ~[netty-3.9.3.Final.jar:na] 
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:422) ~[netty-3.9.3.Final.jar:na] 
    at org.jboss.netty.channel.DefaultChannelFuture.setFailure(DefaultChannelFuture.java:384) ~[netty-3.9.3.Final.jar:na] 
    at org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:109) ~[netty-3.9.3.Final.jar:na] 
Caused by: java.net.ConnectException: Connection timed out: no further information: finance.yahoo.com/106.10.xxx.xx:80 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_71] 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_71] 

想知道我在哪里缺少一块..

同样,当我在浏览器中输入网址时,我可以看到输出。我是否需要更新application.conf中的application.secret才能使其工作....

+0

更新您的问题与您用于获取该数据和/或异常stacktrace的代码。没有它将很难猜到发生了什么...... – Salem 2015-02-10 10:46:58

+0

plis @BalaB添加你得到的异常。 – 2015-02-11 15:08:57

+0

嗨圣地亚哥,我更新了代码并发布了异常。 – BalaB 2015-02-12 08:51:38

回答

1

认为问题是您从响应中获得Json,但然后您要求输入“message”字段存在于雅虎金融响应中。

wsResponse.asJson().get("message"); 

你想要返回什么?如果你想返回相同的雅虎发送你只需要

public static F.Promise<Result> getAllCurrencies(){ 

     SimpleDateFormat formater = new SimpleDateFormat("YYYYMMdd"); 
     String curl = "http://finance.yahoo.com/connection/currency-converter-cache"; 
     F.Promise<WSResponse> holder1 = WS.url(curl).get(); 


      F.Promise<Result> holder = WS.url(curl).setQueryParameter("date", formater.format(new Date())).get().map(new F.Function<WSResponse, Result>() { 
       @Override 
       public Result apply(WSResponse wsResponse) throws Throwable { 
        return ok(wsResponse.asJson()); 
       } 
      }); 

     return holder; 

    } 
+0

问题是由于我的办公室网络政策广告,我通过intelliJ的想法背后代理运行。感谢圣地亚哥。 – BalaB 2015-02-12 19:53:07