Akka HTTP:s CONNECT-transport för HTTPS-förfrågningar
Koppla proxytransporten till inställningarna för connection pool och skicka dessa inställningar till förfrågan som behöver tunneln.
För en HTTPS-förfrågan i Akka HTTP, konfigurera klienttransporten så att CONNECT upprättas via forward-proxyn:
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 tillhandahåller sin befintliga ActorSystem som system och behåller den vanliga livscykeln för stream och response-entity. Konsumera eller kasta den returnerade response-entiteten på lämpligt sätt så att anslutningen kan frigöras.
Namnet httpsProxy avser här att upprätta en HTTPS-anslutning till målet via en HTTP CONNECT-proxy. Det är inte en instruktion att öppna en TLS-session mot själva proxy-lyssnaren.
Skicka de anpassade inställningarna till förfrågan eller poolen som sänder trafiken. Att bygga inställningar bredvid ett anrop som använder en annan poolkonfiguration lämnar det anropet oförändrat.
Akka dokumenterar denna transport för HTTPS-förfrågningar. Behåll målet som dess riktiga HTTPS-URI. En HTTP-endpoint från HTTP-proxylistan är en kandidat för transporten när den tillåter CONNECT-målet som krävs. Ett bindFlow-forwardingexempel på serversidan skapar en annan HTTP-tjänst och svarar på ett annat konstruktionsproblem.