Brug Jenkins' proxybevidste HTTP-klient i et plugin
Opbyg pluginets udgående klient via Jenkins' offentlige ProxyConfiguration-hjælper i stedet for at kopiere gemte kontofelter.
Et Jenkins-plugin, der sender en udgående HTTP-anmodning, kan bruge Jenkins' offentlige proxybevidste klienthjælper:
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());
Uddraget bruger typerne hudson.ProxyConfiguration, java.net.URI og java.net.http. Kalderen håndterer input og output samt afbrydelse via sit normale pluginflow. Body-handleren forbruger og kasserer svarlegemet.
newHttpClient og dets builder-grænseflade har været tilgængelige siden Jenkins 2.379. I en controller-JVM anvender de Jenkins' understøttede proxykonfiguration. Genbrug klienten i stedet for at oprette en ny for hver anmodning.
Det undgår at kopiere controllerens gemte proxynavn og adgangskode over i en separat konfigureret transport. En Java HTTP-klient, der oprettes separat, bliver ikke proxybevidst, blot fordi controllerens brugergrænseflade har en proxyangivelse.
For anmodninger, der sender en Authorization-header til destinationen, bør du gennemgå den dokumenterede begrænsning for godkendt proxy på Java 17 og nyere. Dokumentationen fremhæver netop denne kombination; valget af denne hjælper fjerner ikke den klientbegrænsning.