在 Jenkins 插件中发起出站 HTTP 请求时,可以使用 Jenkins 公开的代理感知客户端助手:

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());

这段代码使用 hudson.ProxyConfiguration、java.net.URI 和 java.net.http 类型。调用方按插件常规流程处理输入输出与中断,正文处理器负责消费并丢弃响应正文。

newHttpClient 及其构建器接口自 Jenkins 2.379 起可用。在控制器 JVM 中,它们会应用 Jenkins 支持的代理配置。应复用该客户端,而不是为每个请求都新建一个。

这样可以避免把控制器中存储的代理用户名和密码复制到另行配置的传输层。单独创建的 Java HTTP 客户端不会仅仅因为控制器界面里有代理条目就自动具备代理感知能力。

对于向目标发送 Authorization 头的请求,请查看 Java 17 及更高版本中有关需认证代理的已知限制。Javadoc 专门指出了这一组合;选择该助手并不会消除这一客户端限制。

相关文章