5
哪裏調用dispatch.Http.shutdown()
是否有n
獨立的HTTP調用等等,例如放置: 放在哪裏dispatch.Http.shutdown()
import com.typesafe.scalalogging.slf4j.Logging
import org.json4s._
import org.json4s.native.JsonMethods._
import scala.util.{ Failure, Success }
object Main extends App with Logging {
logger.debug("github.cli")
// GET /users/defunkt: `curl https://api.github.com/users/defunkt`
val host: dispatch.Req = dispatch.host("api.github.com").secure
val request: dispatch.Req = host/"users"/"defunkt"
logger.debug(s"Request URL: ${request.url}")
import dispatch.Defaults.executor
dispatch.Http(request > dispatch.as.Response(_.getHeaders())) onComplete {
case Success(h) => logger.debug(h.toString())
case Failure(e) => logger.debug(s"Error: $e")
}
dispatch.Http(request OK dispatch.as.json4s.Json) onComplete {
case Success(j) => logger.debug(j.toString())
case Failure(e) => logger.debug(s"Error: $e")
}
//dispatch.Http.shutdown() // <<<<< ?????
}
謝謝,/納米
編輯:這可能是一個選擇,比方說,這是一個「正確」的方式來做到這一點?
val headers = dispatch.Http(request > dispatch.as.Response(_.getHeaders()))
val user = dispatch.Http(request OK dispatch.as.json4s.Json)
val all = dispatch.Future.sequence(headers :: user :: Nil)
headers onComplete {
case Success(h) => logger.debug(s"Header: ${h.toString()}")
case Failure(e) => logger.debug(s"Error: $e")
}
user onComplete {
case Success(j) => logger.debug(s"User: ${j.toString()}")
case Failure(e) => logger.debug(s"Error: $e")
}
all onComplete { case _ => dispatch.Http.shutdown() }
編輯中的代碼是要走的路!像這樣重新使用這種期貨相當優雅。 –
謝謝@KevinWright! –
@KevinWright:您可能也有一個答案http://stackoverflow.com/questions/21791580/where-to-put-dispatch-http-shutdown-in-case-of-cascading-http-calls。謝謝,/ nm –