HttpConfigurable pakaitalas išskaidytas per kelis API. Paprogramė, kuri tikrina HTTP proxy nustatymus, atlieka kitą veiksmą nei paprogramė, kuri per juos siunčia užklausą.

Dabartinis naudojimasMigracijos API
Pasirinktos proxy konfigūracijos skaitymasProxySettings.getInstance().getProxyConfiguration()
Žinomų prisijungimo duomenų gavimas arba vartotojo klausimasProxyAuthentication
Prisijungimo duomenų konfigūruotam statiniam galiniam taškui gavimasgetStaticProxyCredentials, Kotlin plėtinys, prieinamas Java per ProxyUtils
URL atidarymas naudojant platformos proxy pasirinkimąHttpConnectionUtils.openConnection(location) arba openHttpConnection(location)

Migracijos API, kurį atstovauja 2024 m. IntelliJ Platform šaltiniai, atveju šie tinklo tipai yra com.intellij.util.net. Pavyzdžiui, Kotlin gali ištirti konfigūraciją ir rasti žinomus statinio proxy prisijungimo duomenis neprašydamas:

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
    )
)

Pagalbininkui reikia ProxyCredentialProvider; metodo nuoroda pritaiko autentifikavimo tarnybą tai sąsajai. Prisijungimo duomenų ieškoma pagal sukonfigūruoto proxy mazgo vardą ir prievadą. null rezultatas gali reikšti, kad konfigūracija nėra statinė, todėl jis neįrodo, kad PAC pasirinktam proxy nereikia autentifikavimo.

Kai tikroji užduotis yra siųsti HTTP užklausą, naudokite platformos jungties pagalbininką, o ne atkurkite maršrutizavimą iš mazgo ir prievado laukų. Jis pasiteirauja platformos proxy parinkiklio dėl tikslinio URL. Statinės konfigūracijos konvertavimas naudojant asJavaProxy() nepaiso jos išimčių sąrašo ir neįgyvendina PAC pasirinkimo.

Jei reikia interaktyvaus autentifikavimo, ProxyAuthentication.getPromptedAuthentication(prompt, host, port) yra atskiras, galintis blokuoti veiksmas. Išsaugokite šį skirtumą migruodami kodą ir patikrinkite API prieinamumą pagal minimalų paprogramės palaikomą Platform SDK.

Susiję straipsniai