CONNECT транспорт на Akka HTTP за HTTPS барања
Прикачете го proxy транспортот на поставките за connection pool и предадете ги тие поставки на барањето на кое му треба тунел.
За HTTPS барање на Akka HTTP, поставете го клиентскиот транспорт да воспоставува CONNECT преку forward proxy:
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 и го задржува вообичаениот животен циклус на stream и response-entity. Искористете или отфрлете го вратениот response entity за да може врската да се ослободи.
Името httpsProxy овде означува воспоставување HTTPS врска до дестинацијата преку HTTP CONNECT proxy. Тоа не е инструкција да се отвори TLS сесија кон самиот proxy listener.
Предадете ги прилагодените поставки на барањето или pool-от што го испраќа сообраќајот. Создавањето поставки покрај повик што користи друга конфигурација на pool не го менува тој повик.
Akka го документира овој транспорт за HTTPS барања. Задржете ја дестинацијата како вистински HTTPS URI. HTTP endpoint од листата на HTTP proxy е кандидат за транспортот кога дозволува потребната CONNECT дестинација. Примерот за bindFlow forwarding на серверската страна создава друг HTTP сервис и одговара на друг проблем при конструирање.