Jenkins' proxybewuste HTTP-client gebruiken in een plugin
Bouw de uitgaande client van een plugin via Jenkins' openbare ProxyConfiguration-hulpprogramma in plaats van opgeslagen accountvelden te kopiëren.
Een Jenkins-plugin die een uitgaande HTTP-aanvraag doet, kan het openbare proxybewuste clienthulpprogramma van Jenkins gebruiken:
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());
Het fragment gebruikt de typen hudson.ProxyConfiguration, java.net.URI en java.net.http. De aanroeper regelt invoer en uitvoer en onderbreking via de normale plugin-stroom. De body-handler verbruikt de responsbody en gooit die weg.
newHttpClient en de bijbehorende builder-interface zijn beschikbaar sinds Jenkins 2.379. In een controller-JVM passen ze de door Jenkins ondersteunde proxyconfiguratie toe. Hergebruik de client in plaats van voor elk verzoek een nieuwe te maken.
Zo voorkomt u dat de in de controller opgeslagen proxynaam en het wachtwoord naar een apart geconfigureerd transport worden gekopieerd. Een apart gemaakte Java HTTP-client wordt niet proxybewust alleen omdat de controller-interface een proxy-item bevat.
Voor verzoeken die een Authorization-header naar de bestemming sturen, bekijkt u de gedocumenteerde beperking voor geauthenticeerde proxy's op Java 17 en hoger. De documentatie wijst specifiek op die combinatie; het kiezen van dit hulpprogramma heft die clientbeperking niet op.