For en HTTPS-forespørsel i Akka HTTP, konfigurer klienttransporten slik at CONNECT etableres gjennom forward-proxyen:

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)

Applikasjonen leverer sin eksisterende ActorSystem som system og beholder den vanlige livssyklusen for stream og response-entity. Konsumer eller forkast response-entityen som returneres, slik at tilkoblingen kan frigjøres.

Navnet httpsProxy viser her til å etablere en HTTPS-forbindelse til målet gjennom en HTTP CONNECT-proxy. Det er ikke en instruks om å åpne en TLS-økt mot selve proxy-lytteren.

Send de tilpassede innstillingene inn i forespørselen eller poolen som sender trafikken. Å bygge innstillinger ved siden av et kall som bruker en annen pool-konfigurasjon, endrer ikke det kallet.

Akka dokumenterer denne transporten for HTTPS-forespørsler. Behold målet som den ekte HTTPS-URI-en. Et HTTP-endepunkt fra HTTP-proxy-listen er en kandidat for transporten når det tillater CONNECT-målet som kreves. Et bindFlow-forwarding-eksempel på serversiden lager en annen HTTP-tjeneste og svarer på et annet konstruksjonsproblem.

Relaterte artikler