我正在尝试使用 Scala 和 spray-client 编写一个简单的 HTTP 客户端。我的客户基于Spray docs上给出的示例。
我的问题是该示例正在创建一个新的隐式ActorSystem 即
implicit val system = ActorSystem()
但我希望我的客户端是可重用的,而不是创建一个新的 ActorSystem。
这是我的代码的要点。
trait WebClient {
def get(url: String)(implicit system: ActorSystem): Future[String]
}
object SprayWebClient extends WebClient {
val pipeline: HttpRequest => Future[HttpResponse] = sendReceive
def get(url: String): Future[String] = {
val r = pipeline (Get("http://some.url/"))
r.map(_.entity.asString)
}
}
但是我收到两个关于隐式的编译器错误
implicit ActorRefFactory required: if outside of an Actor you need an implicit ActorSystem, inside of an actor this should be the implicit ActorContext WebClient.scala ...
和
not enough arguments for method sendReceive: (implicit refFactory: akka.actor.ActorRefFactory, implicit executionContext: scala.concurrent.ExecutionContext, implicit futureTimeout: akka.util.Timeout)spray.http.HttpRequest => scala.concurrent.Future[spray.http.HttpResponse]. Unspecified value parameters refFactory, executionContext. WebClient.scala...
我应该如何更改 API 定义?