scala
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.settings.ConnectionPoolSettings
import scala.concurrent.duration._
object HttpClientExample {
def main(args: Array[String]): Unit = {
implicit val system = ActorSystem()
implicit val executionContext = system.dispatcher
val connectionSettings = ConnectionPoolSettings(system).withConnectionSettings(
ConnectionSettings(system).withIdleTimeout(30.seconds).withConnectingTimeout(5.seconds))
val http = Http()(system)
val request = HttpRequest(uri = "http://example.com")
http.singleRequest(request, settings = connectionSettings)
.onComplete {
case Success(response) => println(response)
case Failure(ex) => println(ex.getMessage)
}
}
}
scala
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import scala.concurrent.Future
object HttpClientExample {
def main(args: Array[String]): Unit = {
implicit val system = ActorSystem()
implicit val executionContext = system.dispatcher
val http = Http()(system)
val request = HttpRequest(uri = "http://example.com")
val response: Future[HttpResponse] = http.singleRequest(request)
response.flatMap {
case HttpResponse(StatusCodes.OK, headers, entity, _) =>
entity.toStrict(5.seconds).map(_.data.utf8String)
case HttpResponse(statusCode, _, _, _) =>
Future.successful(s"Request failed with status code $statusCode")
}.onComplete {
case Success(result) => println(result)
case Failure(ex) => println(ex.getMessage)
}
}
}