Configureer voor een HTTPS-verzoek van Akka HTTP het clienttransport zodat CONNECT via de forward proxy tot stand komt:

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)

De applicatie levert het bestaande ActorSystem als system en houdt de gebruikelijke levenscyclus van stream en response-entity aan. Verbruik of verwerp de teruggegeven response-entity zoals gepast, zodat de verbinding kan worden vrijgegeven.

De naam httpsProxy verwijst hier naar het tot stand brengen van een HTTPS-verbinding naar de bestemming via een HTTP CONNECT-proxy. Het is geen instructie om een TLS-sessie met de proxylistener zelf te openen.

Geef de aangepaste instellingen door aan het verzoek of de pool die het verkeer verstuurt. Instellingen naast een aanroep bouwen die een andere poolconfiguratie gebruikt, laat die aanroep ongewijzigd.

Akka documenteert deze transport voor HTTPS-verzoeken. Houd de bestemming als de echte HTTPS-URI. Een HTTP-endpoint uit de HTTP-proxylijst is een kandidaat voor de transport wanneer het de vereiste CONNECT-bestemming toestaat. Een bindFlow-forwardingvoorbeeld aan de serverkant maakt een andere HTTP-dienst en beantwoordt een ander constructieprobleem.

Gerelateerde artikelen