Транспарт CONNECT у Akka HTTP для HTTPS-запытаў
Далучыце транспарт проксі да налад пула злучэнняў і перадайце гэтыя налады запыту, якому патрэбен тунель.
Для 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-службу і адказвае на іншую праблему пабудовы.