การแทนที่ HttpConfigurable ในปลั๊กอิน IntelliJ
อ่านการกำหนดค่าพร็อกซี รับข้อมูลรับรองของปลายทาง และเปิดการเชื่อมต่อที่คำนึงถึงแพลตฟอร์มด้วย API พร็อกซีของ IntelliJ
ตัวแทนของ HttpConfigurable กระจายอยู่หลาย API ปลั๊กอินที่ตรวจสอบการตั้งค่าพร็อกซี HTTP ต้องใช้การดำเนินการต่างจากปลั๊กอินที่ส่งคำขอผ่านการตั้งค่าเหล่านั้น
| การใช้งานปัจจุบัน | API การย้าย |
|---|---|
| อ่านการกำหนดค่าพร็อกซีที่เลือก | ProxySettings.getInstance().getProxyConfiguration() |
| รับข้อมูลรับรองที่รู้จักหรือถามผู้ใช้ | ProxyAuthentication |
| รับข้อมูลรับรองสำหรับปลายทางแบบคงที่ที่กำหนดไว้ | getStaticProxyCredentials ส่วนขยาย Kotlin ที่เปิดให้ Java ผ่าน ProxyUtils |
| เปิด URL ด้วยการเลือกพร็อกซีของแพลตฟอร์ม | HttpConnectionUtils.openConnection(location) หรือ openHttpConnection(location) |
สำหรับ API การย้ายที่แหล่งข้อมูล IntelliJ Platform ปี 2024 แทน ชนิดเครือข่ายเหล่านี้อยู่ใน com.intellij.util.net ตัวอย่างเช่น Kotlin สามารถตรวจสอบการกำหนดค่าและค้นหาข้อมูลรับรองพร็อกซีแบบคงที่ที่รู้จักโดยไม่ต้องถาม:
import com.intellij.util.net.ProxyAuthentication
import com.intellij.util.net.ProxyCredentialProvider
import com.intellij.util.net.ProxySettings
import com.intellij.util.net.getStaticProxyCredentials
val settings = ProxySettings.getInstance()
val configuration = settings.getProxyConfiguration()
val credentials = settings.getStaticProxyCredentials(
ProxyCredentialProvider(
ProxyAuthentication.getInstance()::getKnownAuthentication
)
)
ตัวช่วยต้องใช้ ProxyCredentialProvider การอ้างอิงเมธอดปรับบริการรับรองความถูกต้องให้เข้ากับอินเทอร์เฟซนั้น ข้อมูลรับรองถูกค้นหาตามโฮสต์และพอร์ตของพร็อกซีที่กำหนดไว้ ผลลัพธ์ null อาจหมายความว่าการกำหนดค่าไม่ใช่แบบคงที่ จึงไม่ได้พิสูจน์ว่าพร็อกซีที่เลือกผ่าน PAC ไม่ต้องรับรองความถูกต้อง
เมื่องานจริงคือการส่งคำขอ HTTP ให้ใช้ตัวช่วยเชื่อมต่อของแพลตฟอร์มแทนการสร้างเส้นทางใหม่จากฟิลด์โฮสต์และพอร์ต ตัวช่วยนี้สอบถามตัวเลือกพร็อกซีของแพลตฟอร์มสำหรับ URL ปลายทาง การแปลงการกำหนดค่าแบบคงที่ด้วย asJavaProxy() ไม่เคารพรายการข้อยกเว้นและไม่ได้ใช้การเลือก PAC
หากต้องรับรองความถูกต้องแบบโต้ตอบ ProxyAuthentication.getPromptedAuthentication(prompt, host, port) เป็นการดำเนินการแยกต่างหากที่อาจบล็อกได้ รักษาความแตกต่างนี้เมื่อย้ายโค้ด และตรวจสอบความพร้อมใช้งานของ API เทียบกับ Platform SDK ขั้นต่ำที่ปลั๊กอินรองรับ