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.

Ähnliche Artikel