3

Scala とスプレー クライアントを使用して単純な HTTP クライアントを作成しようとしています。私は、 Spray docsにある例に基づいてクライアントを作成しています。

私の問題は、例が新しい暗黙のActorSystem ieを作成していることです

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)
  }

}

しかし、暗黙に関する2つのコンパイラエラーが発生しています

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 定義を変更するにはどうすればよいですか?

4

1 に答える 1