Transport CONNECT w Akka HTTP dla żądań HTTPS
Dołącz transport proxy do ustawień puli połączeń i przekaż te ustawienia żądaniu, które potrzebuje tunelu.
W przypadku żądania HTTPS w Akka HTTP skonfiguruj transport klienta tak, aby CONNECT był nawiązywany przez 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)
Aplikacja przekazuje istniejący ActorSystem jako system i zachowuje zwykły cykl życia strumienia oraz response-entity. Zużyj lub odrzuć zwróconą response-entity, aby połączenie mogło zostać zwolnione.
Nazwa httpsProxy oznacza tutaj nawiązanie połączenia z miejscem docelowym HTTPS przez proxy HTTP CONNECT. Nie jest to polecenie otwarcia sesji TLS z samym listenerem proxy.
Przekaż dostosowane ustawienia do żądania lub puli, która wysyła ruch. Utworzenie ustawień obok wywołania używającego innej konfiguracji puli nie zmienia tego wywołania.
Akka dokumentuje ten transport dla żądań HTTPS. Zachowaj miejsce docelowe jako jego rzeczywisty URI HTTPS. Punkt końcowy HTTP z listy proxy HTTP jest kandydatem do transportu, gdy zezwala na wymagane miejsce docelowe CONNECT. Przykład przekazywania bindFlow po stronie serwera tworzy inną usługę HTTP i odpowiada na inny problem konstrukcyjny.