Для HTTPS-запыту Akka HTTP наладзьце кліенцкі транспарт так, каб ён усталёўваў CONNECT праз прамы проксі:

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)

Прыкладанне перадае свой існуючы ActorSystem як system і захоўвае звычайны жыццёвы цыкл плыні і сутнасці адказу. Спажывіце або адкіньце вернутую сутнасць адказу належным чынам, каб злучэнне можна было вызваліць.

Назва httpsProxy тут азначае усталяванне злучэння з HTTPS-прызначэннем праз проксі HTTP CONNECT. Гэта не ўказанне адкрываць сеанс TLS з самім слухачом проксі.

Перадайце наладжаныя параметры ў запыт або пул, які адпраўляе трафік. Калі будаваць налады побач з выклікам, які выкарыстоўвае іншую канфігурацыю пула, гэты выклік застанецца нязменным.

Akka дакументуе гэты транспарт для HTTPS-запытаў. Пакідайце прызначэнне ў выглядзе сапраўднага HTTPS URI. HTTP-канчатковая кропка з спіса HTTP-проксі з'яўляецца кандыдатам для гэтага транспарту, калі яна дазваляе патрэбнае прызначэнне CONNECT. Прыклад перасылкі bindFlow на баку сервера стварае іншую HTTP-службу і адказвае на іншую праблему пабудовы.

Падобныя артыкулы