Transportul CONNECT al Akka HTTP pentru cererile HTTPS
Atașați transportul proxy la setările pool-ului de conexiuni și transmiteți acele setări cererii care are nevoie de tunel.
Pentru o cerere HTTPS în Akka HTTP, configurați transportul clientului astfel încât CONNECT să fie stabilit prin forward proxy:
import java.net.InetSocketAddress
import akka.http.scaladsl.{ClientTransport, Http}
import akka.http.scaladsl.model.HttpRequest
import akka.http.scaladsl.settings.ConnectionPoolSettings
val transport = ClientTransport.httpsProxy(
InetSocketAddress.createUnresolved("proxy.example", 8080))
val settings = ConnectionPoolSettings(system)
.withConnectionSettings(_.withTransport(transport))
val response = Http().singleRequest(
HttpRequest(uri = "https://example.com/"),
settings = settings)
Aplicația furnizează ActorSystem-ul existent ca system și păstrează ciclul de viață obișnuit al stream-ului și al response-entity. Consumați sau aruncați response-entity-ul returnat, după caz, pentru ca conexiunea să poată fi eliberată.
Numele httpsProxy se referă aici la stabilirea unei conexiuni către destinația HTTPS printr-un proxy HTTP CONNECT. Nu este o instrucțiune de a deschide o sesiune TLS cu listenerul proxy în sine.
Transmiteți setările personalizate cererii sau pool-ului care trimite traficul. Construirea setărilor lângă un apel care folosește altă configurație de pool lasă acel apel neschimbat.
Akka documentează acest transport pentru cererile HTTPS. Păstrați destinația ca URI-ul HTTPS real. Un endpoint HTTP din lista de proxy HTTP este un candidat pentru transport atunci când permite destinația CONNECT necesară. Un exemplu de forwarding bindFlow pe partea de server creează un alt serviciu HTTP și răspunde unei alte probleme de construcție.