1

我正在使用 Scala 中的 Rapture 构建一个 API,并且无法解决隐式不在范围内的问题。这是我收到的错误的输出。

[error] /Users/Petesta/Documents/scala-project/src/main/scala/scala-project/main.scala:35: an implicit TimeSystem is required; please import timeSystems.numeric or timeSystems.javaUtil
[error] Error occurred in an application involving default arguments.
[error]     val response = h.get()
[error]                         ^
[error] one error found
[error] (compile:compile) Compilation failed
[error] Total time: 5 s, completed Oct 16, 2014 3:36:10 PM

这是它失败的代码。

def getUser(userName: String) = {
    val h = Http / "some_url" / "user" / userName /? Map('key -> "value")
    val response = h.get()
}

我不确定该怎么做,因为我尝试分别导入这两个库并且错误仍然相同。

我还添加了-Xlog-implicits标志以查看是否有其他原因导致错误,但没有输出其他信息。

使用 rapture-net 库进行 HTTP 请求是否有很好的资源?除了Scala By The Bay的 Jon Pretty 的幻灯片,我找不到其他的。我想不出一种将带有查询字符串的 url 传递到 rapture-uri 的方法,因为它希望函数调用看起来像这样uri"url_dot_domain_with_query_strings".slurp[Char]

有任何想法吗?

4

1 回答 1

2

在这种情况下,编译错误并不完全正确。您需要 2 个导入中的 1 个,并且需要指定超时值。

def getUser(userName: String) = {
  import timeSystems.numeric
  val h = Http / "some_url" / "user" / userName /? Map('key -> "value")
  val response = h.get(timeout = 5000L)
}

我真的不知道有什么好的资源,但是您的基本单行代码是正确的。该库的最大问题实际上是有关所需导入的文档。但这是我发现对我有用的:

def getGoogle() = {
  import rapture.codec._
  import rapture.io._
  import rapture.uri._
  import rapture.net._
  import encodings.`UTF-8`
  uri"http://google.com".slurp[Char]
}
于 2014-11-02T20:19:45.590 回答