Ta i bruk Jenkins sin proxybevisste HTTP-klient i en plugin
Sett opp pluginens utgående klient gjennom Jenkins sin åpne ProxyConfiguration-hjelper framfor å duplisere lagrede kontofelt.
En plugin for Jenkins som utfører en utgående HTTP-forespørsel kan benytte Jenkins sin åpne 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 benytter typene hudson.ProxyConfiguration, java.net.URI og java.net.http. Inn- og utdata og avbrudd håndteres av den som kaller, gjennom den vanlige pluginflyten. Kroppshåndtereren bruker opp og forkaster svarkroppen.
newHttpClient og byggergrensesnittet har eksistert siden Jenkins 2.379. I en kontroller-JVM anvender de proxyoppsettet som Jenkins støtter. Bruk klienten om igjen framfor å opprette en ny for hver forespørsel.
På den måten slipper du å duplisere proxynavnet og passordet som er lagret i kontrolleren, inn i en transport som er satt opp separat. En Java HTTP-klient som opprettes separat, blir ikke proxybevisst bare fordi kontrollergrensesnittet inneholder en proxyoppføring.
For forespørsler som sender en Authorization-header til målet, bør du gjennomgå den dokumenterte begrensningen for autentisert proxy på Java 17 og senere. Dokumentasjonen peker særskilt på denne kombinasjonen; å velge denne hjelperen fjerner ikke den klientbegrensningen.