Jenkins' proxyfähigen HTTP-Client in einem Plugin verwenden
Erstellen Sie den ausgehenden Client eines Plugins über den öffentlichen ProxyConfiguration-Helfer von Jenkins, statt gespeicherte Kontofelder zu kopieren.
Ein Jenkins-Plugin, das eine ausgehende HTTP-Anfrage stellt, kann den öffentlichen proxyfähigen Client-Helfer von Jenkins verwenden:
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());
Das Fragment nutzt die Typen hudson.ProxyConfiguration, java.net.URI und java.net.http. Der Aufrufer behandelt Ein- und Ausgabe sowie Unterbrechungen über seinen normalen Plugin-Ablauf. Der Body-Handler liest den Antwortkörper und verwirft ihn.
newHttpClient und seine Builder-Schnittstelle sind seit Jenkins 2.379 verfügbar. In einer Controller-JVM wenden sie die von Jenkins unterstützte Proxykonfiguration an. Verwenden Sie den Client erneut, statt für jede Anfrage einen neuen zu erzeugen.
So vermeiden Sie, den im Controller gespeicherten Proxy-Namen und das Passwort in einen separat konfigurierten Transport zu kopieren. Ein separat erzeugter Java-HTTP-Client wird nicht allein dadurch proxyfähig, dass die Controller-Oberfläche einen Proxy-Eintrag enthält.
Bei Anfragen, die einen Authorization-Header an das Ziel senden, prüfen Sie die dokumentierte Einschränkung für authentifizierte Proxys unter Java 17 und höher. Die Dokumentation weist ausdrücklich auf diese Kombination hin; die Wahl dieses Helfers hebt die Einschränkung des Clients nicht auf.