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

Подобни статии