Python相当于Curl HTTP的帖子

时间:2010-07-14 12:26:22

标签: python http curl

我使用以下命令 -

从命令行使用curl发布到Hudson服务器
curl -X POST -d '<run><log encoding="hexBinary">4142430A</log><result>0</result><duration>2000</duration></run>' \
http://user:pass@myhost/hudson/job/_jobName_/postBuildResult

如hudson文档中所示..我可以使用python来模拟相同的东西。我不想使用pyCurl或通过os.system()发送此行..是否有使用原始python的方法? ?

2 个答案:

答案 0 :(得分:21)

import urllib2

req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
result = response.read()

其中data是您要POST的编码数据。

您可以使用urllib对dict进行编码,如下所示:

import urllib

values = { 'foo': 'bar' }
data = urllib.urlencode(values)

答案 1 :(得分:4)

使用requests模块(标语: HTTP for human!:)

,现代解决方案更为简单
import requests

r = requests.post('http://httpbin.org/post', data = {'key':'value'}, auth=('user', 'passwd'))
r.text      # response as a string
r.content   # response as a byte string
            #     gzip and deflate transfer-encodings automatically decoded 
r.json()    # return python object from json! this is what you probably want!