Der CONNECT-Transport von Akka HTTP für HTTPS-Anfragen
Binden Sie den Proxy-Transport an die Einstellungen des Verbindungspools und übergeben Sie diese Einstellungen an die Anfrage, die den Tunnel benötigt.
Für eine HTTPS-Anfrage von Akka HTTP konfigurieren Sie den Client-Transport so, dass er CONNECT über den Forward-Proxy aufbaut:
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)
Die Anwendung stellt ihr vorhandenes ActorSystem als system bereit und behält den üblichen Lebenszyklus von Stream und Antwort-Entität bei. Verbrauchen oder verwerfen Sie die zurückgegebene Antwort-Entität wie angebracht, damit die Verbindung freigegeben werden kann.
Der Name httpsProxy bezeichnet hier das Herstellen einer HTTPS-Zielverbindung über einen HTTP-CONNECT-Proxy. Es ist keine Anweisung, eine TLS-Sitzung zum Proxy-Listener selbst zu öffnen.
Übergeben Sie die angepassten Einstellungen an die Anfrage oder den Pool, der den Datenverkehr sendet. Werden Einstellungen neben einem Aufruf erstellt, der eine andere Pool-Konfiguration verwendet, bleibt dieser Aufruf unverändert.
Akka dokumentiert diesen Transport für HTTPS-Anfragen. Behalten Sie das Ziel als seine echte HTTPS-URI bei. Ein HTTP-Endpunkt aus der HTTP-Proxy-Liste kommt für den Transport infrage, wenn er das erforderliche CONNECT-Ziel zulässt. Ein serverseitiges bindFlow-Weiterleitungsbeispiel erstellt einen anderen HTTP-Dienst und beantwortet ein anderes Konstruktionsproblem.