玩!框架WS函数似乎丢弃了我的GET变量

时间:2012-06-17 04:50:25

标签: http scala playframework

我对Play很新!框架(和Scala本身,真的),但我似乎已经在实现(共同?)功能上发挥作用。我的代码如下:

package controllers

import play.api._
import play.libs._
import play.api.mvc._

object Application extends Controller {
     def jsonStringMap(str: String) =
      util.parsing.json.JSON.parseFull(str) match {
         case Some(m: Map[_,_]) => m collect {
               // If this doesn't match, we'll just ignore the value
               case (k: String, v: String) => (k,v)
            } toMap
         case _ => Map[String,String]()
      }

  def index = Action {
    Ok(views.html.index("Your new application is ready."));
  }

  def view_mix(id: Int) = Action {
    Ok("")
  }

  def view_popular = Action {
    val whydoyouhateme: F.Promise[play.libs.WS.Response] = WS.url("http://8tracks.com/mixes/1002?format=json&api_key=10889794345788a1eee1110e06b5aa5405d76170").get()
    Ok(whydoyouhateme.get().getBody())
  }
}

我关心的行(val whydoyouhateme ....)应该,如果逻辑代表服务,返回就像我将浏览器指向http://8tracks.com/mixes/1002?format=json&api_key=10889794345788a1eee1110e06b5aa5405d76170一样。遗憾的是并非如此。如果我去http://8tracks.com/mixes/1002(这只是一个重定向),它会给我看到的内容。

我在这里遗漏了什么吗?我是否必须在其他地方指定GET变量?这真的让我疯了,Eclipse IDE在提供帮助方面没有做太多工作(代码完成再次让我失望)。

对所有解决方案开放,如果有必要,我很乐意介绍一个新的库。

1 个答案:

答案 0 :(得分:1)

FML!去搞清楚。我错过了一个相当重要的规范(setQueryParameter(string,string))。

固定行:

val whydoyouhateme: F.Promise[play.libs.WS.Response] = WS.url("http://8tracks.com/mixes/1002").setQueryParameter("format", "json").setQueryParameter("api_key", "10889794345788a1eee1110e06b5aa5405d76170").get()

希望别人可能觉得这很有用。