scala import akka.actor.ActorSystem import akka.http.scaladsl.{Http, HttpExt} import akka.http.scaladsl.model.{HttpRequest, HttpResponse} import scala.concurrent.{ExecutionContextExecutor, Future} import akka.http.scaladsl.model.StatusCodes import akka.http.scaladsl.model.HttpMethods.GET import scala.util.{Failure, Success} implicit val system: ActorSystem = ActorSystem() implicit val executionContext: ExecutionContextExecutor = system.dispatcher val http: HttpExt = Http() def sendRequest(url: String): Future[HttpResponse] = { val request = HttpRequest(GET, url) http.singleRequest(request) } val url = "https://api.example.com" val responseFuture: Future[HttpResponse] = sendRequest(url) responseFuture onComplete { case Success(response) => if (response.status.isSuccess()) { println(s"Request succeeded with status code ${response.status}") } else { println(s"Request failed with status code ${response.status}") } case Failure(ex) => ex match { case _: java.net.ConnectException => println("Connection error") case _: java.util.concurrent.TimeoutException => println("Request timed out") case _ => println("Unknown network error") } } scala val http: HttpExt = Http() def sendRequest(url: String): Future[HttpResponse] = { val request = HttpRequest(GET, url) http.singleRequest(request) } val url = "https://api.example.com" val responseFuture: Future[HttpResponse] = sendRequest(url) responseFuture onComplete { case Success(response) => if (response.status.isSuccess()) { println(s"Request succeeded with status code ${response.status}") } else { response.status match { case status @ StatusCodes.ClientError(clientErrorCode) => println(s"Request failed with client error: $clientErrorCode") case status @ StatusCodes.ServerError(serverErrorCode) => println(s"Request failed with server error: $serverErrorCode") case _ => println("Unknown HTTP error response") } } case Failure(ex) => println("Unknown error") }


上一篇:
下一篇:
切换中文