Le transport CONNECT d'Akka HTTP pour les requêtes HTTPS
Attachez le transport du proxy aux paramètres du pool de connexions et transmettez ces paramètres à la requête qui a besoin du tunnel.
Pour une requête HTTPS d'Akka HTTP, configurez son transport client afin d'établir CONNECT via le proxy de transfert :
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'application fournit son ActorSystem existant comme system et conserve le cycle de vie habituel du flux et de l'entité de réponse. Consommez ou écartez l'entité de réponse renvoyée selon le cas afin que la connexion puisse être libérée.
Le nom httpsProxy désigne ici l'établissement d'une connexion de destination HTTPS via un proxy HTTP CONNECT. Ce n'est pas une instruction d'ouvrir une session TLS avec l'écouteur du proxy lui-même.
Transmettez les paramètres personnalisés à la requête ou au pool qui envoie le trafic. Construire des paramètres à côté d'un appel qui utilise une autre configuration de pool laisse cet appel inchangé.
Akka documente ce transport pour les requêtes HTTPS. Conservez la destination comme son véritable URI HTTPS. Un point de terminaison HTTP de la liste de proxies HTTP est candidat pour le transport lorsqu'il autorise la destination CONNECT requise. Un exemple de transfert bindFlow côté serveur crée un autre service HTTP et répond à un problème de construction différent.