El transport CONNECT d'Akka HTTP per a sol·licituds HTTPS
Adjunteu el transport del proxy a la configuració del pool de connexions i passeu aquesta configuració a la sol·licitud que necessita el túnel.
Per a una sol·licitud HTTPS d'Akka HTTP, configureu el transport de client perquè estableixi CONNECT a través del proxy directe:
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'aplicació proporciona el seu ActorSystem existent com a system i conserva el cicle de vida habitual del flux i de l'entitat de resposta. Consumiu o descarteu l'entitat de resposta retornada segons convingui perquè la connexió es pugui alliberar.
El nom httpsProxy aquí fa referència a establir una connexió de destinació HTTPS a través d'un proxy HTTP CONNECT. No és una instrucció per obrir una sessió TLS amb el propi oient del proxy.
Passeu la configuració personalitzada a la sol·licitud o al pool que envia el trànsit. Construir la configuració al costat d'una crida que utilitza una altra configuració de pool deixa aquesta crida sense canvis.
Akka documenta aquest transport per a sol·licituds HTTPS. Mantingueu la destinació com el seu URI HTTPS real. Un punt final HTTP de la llista de proxys HTTP és un candidat per al transport quan permet la destinació CONNECT requerida. Un exemple de reenviament bindFlow al costat del servidor crea un altre servei HTTP i respon a un problema de construcció diferent.