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