2015-10-19 96 views
0

我成功地使用这个新的詹金斯的工作:用Python创建请求

curl -X POST -H "Content-Type:application/xml" -d "<project><builders/><publishers/><buildWrappers/></project>" "http://USER:[email protected]_HOST/createItem?name=NEW_JOB_NAME" 

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

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

我应该在哪里放置"<project><builders/><publishers/><buildWrappers/></project>"部分?

回答

1

而不是尝试将GET参数拆分为有效内容,您需要将GET参数与URI的其余部分放在一起。负载应由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) 
+0

谢谢你的性反应chelmertz但它抛出一个错误:文件“F:\ Python27 \ LIB \站点包\请求\ self.headers = CaseInsensitiveDict((to_native_string(name),value)for name,values in headers.items()) AttributeError:'set'object has no attribute'items' –

+0

@KostasDemiris啊,对不起,你有一个错误,我重复使用:)编辑后请参阅'headers'。 – chelmertz

+1

Niceee!完美的作品。再次感谢。 –