3

我可以用 Python 做到这一点,但不能用 Curl ......

$ curl -H "Content-Type: application/json; charset=UTF-8" --data-urlencode   \
   '{ "description": "This is a test job.", "displayName": "#30: Success" }' \
   -n http://localhost/job/playground/30/configSubmit


<body><h2>HTTP ERROR 400</h2>
<p>Problem accessing /job/playground/30/configSubmit. Reason:
<pre>    Nothing is submitted</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>
4

2 回答 2

2

我为此挣扎了几个小时。最终,这个对类似问题的回答让我陷入了困境。

似乎 Jenkins 期望表单数据具有一个名为json. 最终对我有用的 curl 命令是

curl -X POST -F 'json={"displayName":"name","description":"a short description"}' \
  http://localhost/job/playground/30/configSubmit
于 2020-09-16T18:18:18.360 回答
0

@Pete 的答案是正确的,但它足以运行:

curl -F 'json={"displayName":"name","description":"a short description"}' \ http://localhost/job/playground/30/configSubmit

多一点解释:

  • curl 中的-F选项用于发布表单,因此-X POST没有必要。
  • json=是必需的,相当于设置Content-Type: application/json
  • --data-urlencode(如问题中所用)在使用时它会覆盖-F- 所以它不能在这里使用。

@ebeezer 问题来自尝试仅设置“描述”,而需要同时设置“描述”和“显示名称”以使请求成功。

于 2021-11-15T01:59:59.047 回答