使用map(Scala)时缺少参数

时间:2013-05-04 10:06:53

标签: scala map httprequest

我有一个恼人的错误,我找不到任何解释。 我在下面有这个代码:

Async{
  WS.url(url).get().map{ response =>  //response here is giving me the error.
    Ok("Response: " + (response.json \ "media_count").as[String])
  }
}

这给了我一个错误说:

missing parameter type

关于回应。

我应该在哪里定义此参数类型?或者这个错误说的更具体?

2 个答案:

答案 0 :(得分:1)

我认为您正在使用适用于Java API的play.libs.WS

此WS类的WS.url(...).get()返回此类型的Promise对象:Promise。此类的map函数采用Function实例,该实例与Scala中的Function1不同。这导致编译器错误。

如果您在Scala中工作,则应使用play.api.libs.ws.WS,这意味着可以使用Scala库。在程序中将import play.libs.WS替换为import play.api.libs.ws.WS,错误就会消失。

答案 1 :(得分:0)

这是我的代码,终于让它工作了。我想我想复杂而艰难。有时它会变得复杂。现在我可以面对一些新的障碍并找到新的有趣解决方案:)

Async{
  try{
    WS.url(requestUrl).get().map{ response =>
      val param = (response.json.\("data").\("media_count"))
      Ok(param.toString())
    }
  } catch {
    case _:Throwable => {
      Promise.pure(Ok("there was an error"))
     }
  }
}