【问题标题】:Creating a new Jenkins job with python Requests使用 python 请求创建新的 Jenkins 作业
【发布时间】:2015-10-19 17:59:11
【问题描述】:

我成功使用了这个:

curl -X POST -H "Content-Type:application/xml" -d "<project><builders/><publishers/><buildWrappers/></project>" "http://USER:PASSWORD@JENKINS_HOST/createItem?name=NEW_JOB_NAME"

我把它转换成这个python代码:

url     = "http://USER:PASS@HOST/createItem"
payload = { 'name' : 'NEW_JOB_NAME' }
headers = {"Content-Type:application/xml"}
r = requests.post(url, data=payload, headers=headers)

我应该把"&lt;project&gt;&lt;builders/&gt;&lt;publishers/&gt;&lt;buildWrappers/&gt;&lt;/project&gt;" 部分放在哪里??

【问题讨论】:

    标签: python jenkins python-requests


    【解决方案1】:

    您需要将 GET 参数与 URI 的其余部分放在一起,而不是尝试将 GET 参数拆分为有效负载。负载应该由 POST 数据(HTTP 请求的“主体”,cURL 的 -d 参数)组成。

    我还将身份验证提取为请求的首选语法。

    url     = 'http://HOST/createItem?name=NEW_JOB_NAME'
    auth    = ('USER', 'PASS')
    payload = '<project><builders/><publishers/><buildWrappers/></project>'
    headers = {"Content-Type": "application/xml"}
    r = requests.post(url, data=payload, auth=auth, headers=headers)
    

    要确认结果,您可以添加以下几行:

    print(r.status_code)
    print(r.text)
    

    【讨论】:

    • 感谢您的回复 chelmertz 但它会引发错误:文件“F:\Python27\lib\site-packages\requests\models.py”,第 411 行,在 prepare_headers self.headers = CaseInsensitiveDict( (to_native_string(name), value) for name, value in headers.items()) AttributeError: 'set' object has no attribute 'items'
    • @KostasDemiris 啊,对不起,你遇到了一个我重复使用的错误:) 在我编辑后查看headers
    • 不错!完美运行。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多