Bruk Jenkins' proxybevisste HTTP-klient i en plugin
Bygg pluginens utgående klient via Jenkins' offentlige ProxyConfiguration-hjelper i stedet for å kopiere lagrede kontofelt.
En Jenkins-plugin som sender en utgående HTTP-forespørsel kan bruke Jenkins' offentlige proxybevisste klienthjelper:
HttpClient client = ProxyConfiguration.newHttpClient();
HttpRequest request = ProxyConfiguration.newHttpRequestBuilder(
URI.create("https://service.example/status"))
.GET()
.build();
HttpResponse<Void> response = client.send(
request, HttpResponse.BodyHandlers.discarding());
Utdraget bruker typene hudson.ProxyConfiguration, java.net.URI og java.net.http. Kallerens normale pluginflyt håndterer inn- og utdata samt avbrudd. Kroppshåndtereren leser og forkaster svarkroppen.
newHttpClient og byggergrensesnittet har vært tilgjengelige siden Jenkins 2.379. I en kontroller-JVM bruker de Jenkins' støttede proxykonfigurasjon. Gjenbruk klienten i stedet for å lage en ny for hver forespørsel.
Det unngår å kopiere kontrollerens lagrede proxynavn og passord til en transport som er konfigurert separat. En Java HTTP-klient som opprettes separat, blir ikke proxybevisst bare fordi kontrollergrensesnittet har en proxyoppføring.
For forespørsler som sender en Authorization-header til målet, bør du gå gjennom den dokumenterte begrensningen for autentisert proxy på Java 17 og nyere. Dokumentasjonen peker spesielt på denne kombinasjonen; valget av denne hjelperen fjerner ikke den klientbegrensningen.