Transporte CONNECT do Akka HTTP para requisições HTTPS
Anexe o transporte de proxy às configurações do pool de conexões e passe essas configurações para a requisição que precisa do túnel.
Para uma requisição HTTPS no Akka HTTP, configure o transporte do cliente para estabelecer CONNECT através do proxy de encaminhamento:
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)
A aplicação fornece o ActorSystem existente como system e mantém o ciclo de vida habitual do stream e da response-entity. Consuma ou descarte a response-entity retornada conforme apropriado para que a conexão possa ser liberada.
O nome httpsProxy refere-se aqui a estabelecer uma conexão de destino HTTPS através de um proxy HTTP CONNECT. Não é uma instrução para abrir uma sessão TLS com o próprio listener do proxy.
Passe as configurações personalizadas para a requisição ou o pool que envia o tráfego. Construir configurações ao lado de uma chamada que usa outra configuração de pool deixa essa chamada inalterada.
O Akka documenta este transporte para requisições HTTPS. Mantenha o destino como seu URI HTTPS real. Um endpoint HTTP da lista de proxies HTTP é um candidato para o transporte quando permite o destino CONNECT exigido. Um exemplo de encaminhamento bindFlow no lado do servidor cria outro serviço HTTP e responde a um problema de construção diferente.