【问题标题】:Unable to trigger Jenkins build via java无法通过 java 触发 Jenkins 构建
【发布时间】:2020-02-27 13:50:28
【问题描述】:

我想触发 Jenkins 构建作业,但下面的代码只是检索到错误 403。

  public static void main(String[] args) {
    try {
        URL url = new URL("http://localhost:8080/job/RPA/build?token=117cdb21bf4c01f8c20ff5cf7e368dba8c"); // Jenkins URL localhost:8080, job named 'test'
        String user = "mahmoud"; // username
        String pass = "zaky"; // password or API token
        String authStr = user + ":" + pass;
        String encoding = Base64.getEncoder().encodeToString(authStr.getBytes("utf-8"));

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setRequestProperty("Authorization", "Basic " + encoding);
        InputStream content = connection.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(content));
        String line;
        while ((line = in.readLine()) != null) {
            System.out.println(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
  }

输出为:

java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/job/RPA/build?token=117cdb21bf4c01f8c20ff5cf7e368dba8c
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1919)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
    at com.offbytwo.jenkins.model.mainmain.main(mainmain.java:27)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

我尝试在互联网上搜索此错误,但找不到解决方案,我也想知道如何通过 java 了解构建状态

【问题讨论】:

  • 旁注:我建议使用"UTF-8" 而不是"utf-8" - 或者,更好的是,使用java.nio.charset.StandardCharsets.UTF_8 作为静态导入。我假设你已经知道“403”的意思是forbidden
  • 感谢您的回复,我试过了,但还是一样,我也找到了与令牌相关的问题的解决方案,因为令牌应该在密码中而不是在 URL 中添加:)
  • 好的 - 我的注释是“旁注”,因为它不是您问题的解决方案,只是在您的代码中引用“UTF-8”时推荐的“最佳实践”。很高兴您有解决方案 - 您可以发布自己问题的答案,以便其他人看到。
  • 非常感谢您的支持和添加的回答 :) 并且对于 UTF-8 iam,这是第一次尝试编码,非常感谢您的评论 :)

标签: java jenkins jenkins-api


【解决方案1】:

我想出解决方案只是从 URl 中删除令牌并将其添加到密码中并解决:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2021-09-19
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多