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.

Ähnliche Artikel