我有这个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,但我很难在我的案例中应用它。
答案 0 :(得分:2)
--data-binary
开关意味着:将命令行参数作为整个POST正文发布,而不包含在multipart/form-data
或application/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套接字,有效地传输数据。