En plugin for Jenkins som utfører en utgående HTTP-forespørsel kan benytte Jenkins sin åpne proxybevisste klienthjelper:

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 benytter typene hudson.ProxyConfiguration, java.net.URI og java.net.http. Inn- og utdata og avbrudd håndteres av den som kaller, gjennom den vanlige pluginflyten. Kroppshåndtereren bruker opp og forkaster svarkroppen.

newHttpClient og byggergrensesnittet har eksistert siden Jenkins 2.379. I en kontroller-JVM anvender de proxyoppsettet som Jenkins støtter. Bruk klienten om igjen framfor å opprette en ny for hver forespørsel.

På den måten slipper du å duplisere proxynavnet og passordet som er lagret i kontrolleren, inn i en transport som er satt opp separat. En Java HTTP-klient som opprettes separat, blir ikke proxybevisst bare fordi kontrollergrensesnittet inneholder en proxyoppføring.

For forespørsler som sender en Authorization-header til målet, bør du gjennomgå den dokumenterte begrensningen for autentisert proxy på Java 17 og senere. Dokumentasjonen peker særskilt på denne kombinasjonen; å velge denne hjelperen fjerner ikke den klientbegrensningen.

Relaterte artikler