Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用map(Scala)时缺少参数_Scala_Map_Httprequest - Fatal编程技术网

使用map(Scala)时缺少参数

使用map(Scala)时缺少参数,scala,map,httprequest,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 关于回应 我应该在哪里定义此参数类型?或者这个错

我犯了一个恼人的错误,找不到任何解释。 我有以下代码:

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
关于回应


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

我认为您使用的是针对Java API的
play.libs.WS

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


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

这是我现在的代码,终于可以工作了。我想我是想变得复杂和困难。有时候也没那么复杂。现在我可以面对一些新的障碍,找到新的有趣的解决方案:)


非常感谢,这个错误消失了,但现在又出现了另一个错误。在我的终端窗口中,我得到一个错误,说
[error]play-等待一个承诺,但得到了一个错误:String expected
,然后什么也没发生。我被重定向到我的“Ok()”,但它是空的。我想它至少应该显示类似“Response:null”的内容。可能json中没有“media\u count”,或者它不是一个字符串。从属性的名称来看,它听起来是数字。无论如何,你不会得到空值。如果将来失败,日志中将出现异常,如果您处于开发模式,浏览器中将显示带有错误的redish屏幕。尝试将
更改为[String]
位为
(response.json \“media\u count”).asOpt[String]
asOpt
将返回一个
选项[String]
。如果它返回
None
,则
media\u count
不是您想象的那样。或者更好的是,返回一个
Ok(Json.prettyPrint(response.Json))
来查看您得到的确切信息。我现在无法尝试,但谢谢!我有能力的时候会调查的。我想的一件事是,我的代码不应该至少显示我的字符串“Response:”?我还没来得及看这么多,但我想这是因为在它写出任何“响应:”之前我遇到了一个错误。这是Json.prettyPrint()插件还是?@RobertAxelsson不,它是标准API的一部分:。关于前面的问题,如果未来失败,它将不会提供一些默认值,如“”或
null
。它将使整个请求失败,可能返回500个错误代码。Scala允许您将方法用作运算符。因此,您可以说
(response.json\(“data”)\(“media\u count”)
而不是
(response.json\“data”\“media\u count”)
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"))
     }
  }
}