Заміна 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 плагіна.