java - 无法通过java触发Jenkins构建

标签 java jenkins jenkins-api

我想触发 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 了解构建状态

最佳答案

我找到了解决方案,只需从 URl 中删除 token 并将其添加到密码中即可解决:)

关于java - 无法通过java触发Jenkins构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434763/

相关文章:

java - 是否可以中断 Scanner.hasNext()

maven - 如何在父镜像命令之前运行子Docker镜像命令

jenkins - 访问 Jenkins v2.73.1 crumbIssuer REST API 时出现 404

python - jenkinsapi python - 如何触发和跟踪作业结果

java - JDK7 现在可以安全使用吗?

Java - 基于另一个数组对数组进行排序

jenkins - sh '' ' <command > '' ' - 三滴答 - 在 Jenkinsfile 中的用途是什么?

jenkins-pipeline readJSON - 如何将关键元素读取为列表

jenkins - 作为 Jenkins 管理员,如何在不以用户身份登录的情况下获取用户的 API token ?

Java Swing UI 对齐问题