jenkinsci / jenkinsci/java-client-api

Sending POST http request for Job.build(Map<String, String> params, boolean crumbFlag) with crumbFlag=true raised java.lang.IllegalArgumentException: Name may not be null

未关闭
#433 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
913
派生
466
PR 合并指标
30 天内没有已合并 PR

描述

Hi, I am quiet new to Jenkins client API. I'm trying to use the `Job.build` method to kick off a parameterized job with `crumb` flag set to `true`.
However, it threw this exception:
```
java.lang.IllegalArgumentException: Name may not be null
at org.apache.http.util.Args.notNull(Args.java:54)
at org.apache.http.message.BasicHeader.(BasicHeader.java:61)
at com.offbytwo.jenkins.client.JenkinsHttpClient.post(JenkinsHttpClient.java:233)
at com.offbytwo.jenkins.model.Job.build(Job.java:151)
```

Inspecting further in `JenkinsHttpClient.java`, it looks like the issue is with crumb issuer path:
```
Crumb crumb = getQuietly("/crumbIssuer", Crumb.class);
```

Shouldn't this be `crumbIssuer/api/xml` or `crumbIssuer/api/json`??

I can't turn off CSRF in this Jenkins instance, so that's not an option. How can I workaround or fix this issue?

贡献指南

打开贡献指南

调研方向

首先阅读 JenkinsHttpClient.java 中 post 方法附近的代码以及 Job.java 中 Job.build 附近的代码,然后使用 crumbFlag=true 重现参数化构建。检查 /crumbIssuer 请求及由此产生的请求头构造;当启用 CSRF 保护时请求能够正常工作且不会出现报告中的 IllegalArgumentException,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
api
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。