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

Похожие статьи