CONNECT transport Akka HTTP-a za HTTPS zahtjeve
Pričvrstite proxy transport na postavke connection pool-a i proslijedite te postavke zahtjevu kojem treba tunel.
Za HTTPS zahtjev u Akka HTTP-u konfigurirajte klijentski transport tako da se CONNECT uspostavlja kroz forward proxy:
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)
Aplikacija daje postojeći ActorSystem kao system i zadržava uobičajeni životni ciklus stream-a i response-entity-ja. Iskoristite ili odbacite vraćeni response entity da bi se veza mogla osloboditi.
Naziv httpsProxy ovdje označava uspostavljanje HTTPS veze prema odredištu kroz HTTP CONNECT proxy. To nije uputa za otvaranje TLS sesije prema samom proxy listeneru.
Proslijedite prilagođene postavke zahtjevu ili pool-u koji šalje promet. Stvaranje postavki pored poziva koji koristi drugu konfiguraciju pool-a ne mijenja taj poziv.
Akka dokumentira ovaj transport za HTTPS zahtjeve. Zadržite odredište kao njegov stvarni HTTPS URI. HTTP endpoint s popisa HTTP proxyja kandidat je za transport kada dopušta traženo CONNECT odredište. Primjer bindFlow forwardinga na strani servera stvara drugu HTTP uslugu i odgovara na drugi problem izgradnje.