Transport CONNECT của Akka HTTP cho các yêu cầu HTTPS
Gắn transport proxy vào cài đặt connection pool và truyền cài đặt đó cho yêu cầu cần đường hầm.
Với một yêu cầu HTTPS của Akka HTTP, hãy cấu hình transport của client để thiết lập CONNECT qua 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)
Ứng dụng cung cấp ActorSystem hiện có làm system và giữ nguyên vòng đời thông thường của stream và response-entity. Hãy tiêu thụ hoặc loại bỏ response entity được trả về một cách phù hợp để kết nối có thể được giải phóng.
Tên httpsProxy ở đây chỉ việc thiết lập kết nối đến đích HTTPS thông qua proxy HTTP CONNECT. Đó không phải là chỉ dẫn mở phiên TLS với chính listener của proxy.
Truyền cài đặt đã tùy chỉnh vào yêu cầu hoặc pool gửi lưu lượng. Việc tạo cài đặt bên cạnh một lệnh gọi dùng cấu hình pool khác không làm thay đổi lệnh gọi đó.
Akka ghi nhận transport này cho các yêu cầu HTTPS. Hãy giữ đích là URI HTTPS thực của nó. Một endpoint HTTP từ danh sách proxy HTTP là ứng viên cho transport khi nó cho phép đích CONNECT cần thiết. Ví dụ chuyển tiếp bindFlow phía máy chủ tạo một dịch vụ HTTP khác và trả lời một bài toán dựng khác.