Akka HTTP's CONNECT-transport til HTTPS-anmodninger
Knyt proxytransporten til indstillingerne for forbindelsespuljen, og send disse indstillinger videre til den anmodning, der har brug for tunnelen.
For en Akka HTTP HTTPS-anmodning skal du konfigurere dens klienttransport til at etablere CONNECT gennem forward-proxyen:
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)
Applikationen leverer sit eksisterende ActorSystem som system og bevarer den sædvanlige livscyklus for stream og svar-entitet. Forbrug eller kassér den returnerede svar-entitet efter behov, så forbindelsen kan frigives.
Navnet httpsProxy henviser her til at etablere en HTTPS-destinationsforbindelse gennem en HTTP CONNECT-proxy. Det er ikke en instruks om at åbne en TLS-session til selve proxylytteren.
Send de tilpassede indstillinger videre til den anmodning eller pulje, der sender trafikken. Hvis du bygger indstillinger ved siden af et kald, der bruger en anden puljekonfiguration, forbliver det kald uændret.
Akka dokumenterer denne transport til HTTPS-anmodninger. Behold destinationen som dens rigtige HTTPS-URI. Et HTTP-endepunkt fra HTTP-proxylisten er en kandidat til transporten, når det tillader den krævede CONNECT-destination. Et bindFlow-videresendelseseksempel på serversiden opretter en anden HTTP-tjeneste og besvarer et andet konstruktionsproblem.