Il trasporto CONNECT di Akka HTTP per le richieste HTTPS
Collegate il trasporto del proxy alle impostazioni del pool di connessioni e passate tali impostazioni alla richiesta che necessita del tunnel.
Per una richiesta HTTPS di Akka HTTP, configurate il relativo trasporto client per stabilire CONNECT tramite il proxy in avanti:
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)
L'applicazione fornisce il proprio ActorSystem esistente come system e mantiene il consueto ciclo di vita dello stream e dell'entità di risposta. Consumate o scartate l'entità di risposta restituita come appropriato affinché la connessione possa essere rilasciata.
Il nome httpsProxy indica qui la creazione di una connessione di destinazione HTTPS tramite un proxy HTTP CONNECT. Non è un'istruzione ad aprire una sessione TLS con il listener del proxy stesso.
Passate le impostazioni personalizzate alla richiesta o al pool che invia il traffico. Costruire impostazioni accanto a una chiamata che usa un'altra configurazione del pool lascia tale chiamata invariata.
Akka documenta questo trasporto per le richieste HTTPS. Mantenete la destinazione come il suo URI HTTPS reale. Un endpoint HTTP dell'elenco dei proxy HTTP è candidato al trasporto quando consente la destinazione CONNECT richiesta. Un esempio di inoltro bindFlow lato server crea un altro servizio HTTP e risponde a un diverso problema di costruzione.