如何 POST 使用 Curl 来配置提交 Jenkins 页面
How to POST with Curl to configSubmit Jenkins page
我可以使用 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/>
我为此苦苦挣扎了几个小时。最终,this answer to a similar question 让我摆脱了困境。
Jenkins 似乎需要具有名为 json
的字段的表单数据。最终对我有用的 curl 命令是
curl -X POST -F 'json={"displayName":"name","description":"a short description"}' \
http://localhost/job/playground/30/configSubmit
@Pete 的回答是正确的,但是足够了 运行:
curl -F 'json={"displayName":"name","description":"a short description"}' \ http://localhost/job/playground/30/configSubmit
更多解释:
- curl 中的
-F
选项用于 post 表单,因此 -X POST
没有必要。
需要 json=
等同于设置 Content-Type: application/json
.
--data-urlencode
(如问题中所用)在使用时会覆盖 -F
- 因此不能在此处使用。
@ebeezer 问题来自尝试仅设置“描述”,而必须同时设置“描述”和“显示名称”才能使请求成功。
我可以使用 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/>
我为此苦苦挣扎了几个小时。最终,this answer to a similar question 让我摆脱了困境。
Jenkins 似乎需要具有名为 json
的字段的表单数据。最终对我有用的 curl 命令是
curl -X POST -F 'json={"displayName":"name","description":"a short description"}' \
http://localhost/job/playground/30/configSubmit
@Pete 的回答是正确的,但是足够了 运行:
curl -F 'json={"displayName":"name","description":"a short description"}' \ http://localhost/job/playground/30/configSubmit
更多解释:
- curl 中的
-F
选项用于 post 表单,因此-X POST
没有必要。
需要 json=
等同于设置Content-Type: application/json
.--data-urlencode
(如问题中所用)在使用时会覆盖-F
- 因此不能在此处使用。
@ebeezer 问题来自尝试仅设置“描述”,而必须同时设置“描述”和“显示名称”才能使请求成功。