HTTPS တောင်းဆိုမှုများအတွက် Akka HTTP ၏ CONNECT သယ်ယူပို့ဆောင်မှု
proxy သယ်ယူပို့ဆောင်မှုကို connection pool ဆက်တင်များတွင် ချိတ်ဆက်ပြီး tunnel လိုအပ်သော တောင်းဆိုမှုသို့ ထိုဆက်တင်များကို ပေးပို့ပါ။
Akka HTTP ၏ HTTPS တောင်းဆိုမှုအတွက် forward proxy မှတစ်ဆင့် CONNECT တည်ဆောက်ရန် ၎င်း၏ client transport ကို ပြင်ဆင်ပါ:
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 အဖြစ် ပေးပြီး ပုံမှန် stream နှင့် response-entity သက်တမ်းစက်ဝန်းကို ထိန်းသိမ်းထားသည်။ ချိတ်ဆက်မှုကို လွှတ်ပေးနိုင်ရန် ပြန်လာသော response entity ကို သင့်လျော်သလို သုံးစွဲပါ သို့မဟုတ် ပယ်ဖျက်ပါ။
ဤနေရာတွင် httpsProxy ဟူသော အမည်သည် HTTP CONNECT proxy မှတစ်ဆင့် HTTPS ဦးတည်ရာ ချိတ်ဆက်မှု တည်ဆောက်ခြင်းကို ဆိုလိုသည်။ ၎င်းသည် proxy listener သို့ TLS session ဖွင့်ရန် ညွှန်ကြားချက် မဟုတ်ပါ။
စိတ်ကြိုက်ပြင်ဆင်ထားသော ဆက်တင်များကို လမ်းကြောင်းပို့သော တောင်းဆိုမှု သို့မဟုတ် pool သို့ ပေးပို့ပါ။ အခြား pool ဖွဲ့စည်းမှုကို သုံးသော ခေါ်ဆိုမှုဘေးတွင် ဆက်တင်များ တည်ဆောက်ခြင်းသည် ထိုခေါ်ဆိုမှုကို မပြောင်းလဲစေပါ။
Akka သည် ဤသယ်ယူပို့ဆောင်မှုကို HTTPS တောင်းဆိုမှုများအတွက် မှတ်တမ်းတင်ထားသည်။ ဦးတည်ရာကို ၎င်း၏ အစစ်အမှန် HTTPS URI အဖြစ် ထားရှိပါ။ HTTP proxy စာရင်းမှ HTTP endpoint သည် လိုအပ်သော CONNECT ဦးတည်ရာကို ခွင့်ပြုပါက သယ်ယူပို့ဆောင်မှုအတွက် ကိုယ်စားလှယ်လောင်း ဖြစ်သည်။ ဆာဗာဘက်ခြမ်း bindFlow forwarding ဥပမာသည် အခြား HTTP ဝန်ဆောင်မှုကို ဖန်တီးပြီး မတူညီသော တည်ဆောက်မှုပြဿနာကို ဖြေဆိုသည်။