Ett Jenkins-plugin som gör en utgående HTTP-förfrågan kan använda Jenkins publika proxy-medvetna klienthjälpare:

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 använder typerna hudson.ProxyConfiguration, java.net.URI och java.net.http. Anroparen hanterar in- och utdata samt avbrott via sitt vanliga pluginflöde. Kroppshanteraren läser och kastar svarskroppen.

newHttpClient och dess builder-gränssnitt finns sedan Jenkins 2.379. I en kontroller-JVM tillämpar de den proxykonfiguration som Jenkins stöder. Återanvänd klienten i stället för att skapa en ny för varje förfrågan.

Det undviker att kopiera kontrollerns sparade proxynamn och lösenord till en transport som konfigurerats separat. En Java HTTP-klient som skapas separat blir inte proxy-medveten bara för att kontrollerns gränssnitt har en proxy-post.

För förfrågningar som skickar en Authorization-header till målet, granska den dokumenterade begränsningen för autentiserad proxy på Java 17 och senare. Dokumentationen pekar särskilt ut den kombinationen; valet av denna hjälpare tar inte bort den klientbegränsningen.

Relaterade artiklar