如何在Python请求中转换cURL以更改Jenkins config.xml文件

时间:2015-10-26 18:04:58

标签: python curl jenkins python-requests

我有这个cURL:

curl -X POST http://user:pass@blabla.com:8080/job/myproject/config.xml --data-binary "@new_config.xml"

我基本上是尝试通过更改预先存在的config.xml文件来为Jenkins安装设置新配置。 我试图将其转换为类似的东西,以便在我的代码中更灵活地使用它:

url     = "http://host:8080/job/myproject/config.xml"
auth    = ('user','pass')
payload = {"--data-binary": "@new_config.xml"}
headers = {"Content-Type" : "application/xml"}
r = requests.post(url, auth=auth, data=payload, headers=headers)

我知道我错误地使用了有效负载和标题。我该如何更改它们? 我运行它,我采用500响应代码。

我读过this post,但我很难在我的案例中应用它。

1 个答案:

答案 0 :(得分:2)

--data-binary开关意味着:将命令行参数作为整个POST正文发布,而不包含在multipart/form-dataapplication/x-www-form-encoding个容器中。 @告诉curl从文件名中加载数据;在这种情况下new_config.xml

您需要打开文件对象以将内容作为data参数发送:

url     = "http://host:8080/job/myproject/config.xml"
auth    = ('user','pass')
headers = {"Content-Type" : "application/xml"}
with open('new_config.xml', 'rb') as payload:
    r = requests.post(url, auth=auth, data=payload, headers=headers)

请注意,我直接将文件对象传递给requests;然后,数据将被读取并推送到HTTP套接字,有效地传输数据。