scala
val request = HttpRequest(GET, uri = "https://example.com/data")
val responseFuture: Future[HttpResponse] = Http().singleRequest(request)
responseFuture
.flatMap { response =>
response
.entity
.map { body =>
println(body.utf8String)
}
}
scala
val http = Http(system)
val connectionPoolSettings = ConnectionPoolSettings(system)
http.setDefaultClientPoolSettings(connectionPoolSettings)
scala
val request1 = HttpRequest(GET, uri = "https://example.com/data1")
val request2 = HttpRequest(GET, uri = "https://example.com/data2")
val request3 = HttpRequest(GET, uri = "https://example.com/data3")
val responseFuture1: Future[HttpResponse] = http.singleRequest(request1)
val responseFuture2: Future[HttpResponse] = http.singleRequest(request2)
val responseFuture3: Future[HttpResponse] = http.singleRequest(request3)
val aggregateResponseFuture: Future[(HttpResponse, HttpResponse, HttpResponse)] = for {
response1 <- responseFuture1
response2 <- responseFuture2
response3 <- responseFuture3
} yield (response1, response2, response3)
aggregateResponseFuture.map { case (response1, response2, response3) =>
println(response1.entity)
println(response2.entity)
println(response3.entity)
}
scala
val connectionSettings = ConnectionSettings(system)
val poolSettings = connectionPoolSettings
.withConnectionSettings(connectionSettings)
http.setDefaultClientPoolSettings(poolSettings)