Akka HTTP CONNECT transportas HTTPS užklausoms
Prijunkite proxy transportą prie connection pool nustatymų ir perduokite tuos nustatymus užklausai, kuriai reikia tunelio.
Akka HTTP HTTPS užklausai sukonfigūruokite kliento transportą, kad CONNECT būtų užmezgamas per 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)
Programa pateikia esamą ActorSystem kaip system ir išlaiko įprastą stream bei response-entity gyvavimo ciklą. Sunaudokite arba atmeskite grąžintą response entity, kad ryšys galėtų būti atlaisvintas.
Pavadinimas httpsProxy čia reiškia HTTPS paskirties ryšio užmezgimą per HTTP CONNECT proxy. Tai nėra nurodymas atidaryti TLS sesiją su pačiu proxy listener.
Perduokite pritaikytus nustatymus užklausai arba pool, kuris siunčia srautą. Nustatymų kūrimas šalia kvietimo, kuris naudoja kitą pool konfigūraciją, to kvietimo nepakeičia.
Akka dokumentuoja šį transportą HTTPS užklausoms. Išsaugokite paskirties adresą kaip tikrą HTTPS URI. HTTP endpoint iš HTTP proxy sąrašo yra transporto kandidatas, kai jis leidžia reikiamą CONNECT paskirties adresą. Serverio pusės bindFlow forwarding pavyzdys sukuria kitą HTTP servisą ir atsako į kitą konstravimo problemą.