HttpConfigurable in einem IntelliJ-Plugin ersetzen
Proxy-Konfiguration lesen, Zugangsdaten für Endpunkte abrufen und plattformgerechte Verbindungen mit den IntelliJ-Proxy-APIs öffnen.
Der Ersatz für HttpConfigurable verteilt sich auf mehrere APIs. Ein Plugin, das die Einstellungen für den HTTP-Proxy prüft, braucht eine andere Operation als ein Plugin, das über sie eine Anfrage sendet.
| Bisherige Verwendung | Migrations-API |
|---|---|
| Die ausgewählte Proxy-Konfiguration lesen | ProxySettings.getInstance().getProxyConfiguration() |
| Bekannte Zugangsdaten abrufen oder den Benutzer fragen | ProxyAuthentication |
| Zugangsdaten für den konfigurierten statischen Endpunkt beziehen | getStaticProxyCredentials, eine Kotlin-Erweiterung, die über ProxyUtils für Java bereitgestellt wird |
| Eine URL über die Proxy-Auswahl der Plattform öffnen | HttpConnectionUtils.openConnection(location) oder openHttpConnection(location) |
Für die Migrations-API der IntelliJ-Platform-Quellen von 2024 liegen diese Netzwerktypen in com.intellij.util.net. Kotlin kann beispielsweise die Konfiguration prüfen und bekannte Zugangsdaten für statische Proxys nachschlagen, ohne eine Eingabe anzufordern:
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
)
)
Der Helfer benötigt einen ProxyCredentialProvider; die Methodenreferenz passt den Authentifizierungsdienst an dieses Interface an. Zugangsdaten werden über Host und Port des konfigurierten Proxys nachgeschlagen. Ein Null-Ergebnis kann bedeuten, dass die Konfiguration nicht statisch ist; es belegt also nicht, dass ein per PAC ausgewählter Proxy keine Authentifizierung benötigt.
Wenn die eigentliche Aufgabe darin besteht, eine HTTP-Anfrage zu stellen, verwenden Sie den Verbindungshelfer der Plattform, statt das Routing aus Host- und Port-Feldern nachzubauen. Er fragt den Proxy-Selektor der Plattform für die Ziel-URL ab. Das Umwandeln einer statischen Konfiguration mit asJavaProxy() berücksichtigt deren Ausnahmeliste nicht und implementiert keine PAC-Auswahl.
Wenn eine interaktive Authentifizierung erforderlich ist, ist ProxyAuthentication.getPromptedAuthentication(prompt, host, port) eine separate, potenziell blockierende Operation. Behalten Sie diese Unterscheidung bei der Migration von Code bei und prüfen Sie die Verfügbarkeit der API gegen das minimal unterstützte Platform SDK des Plugins.