开发者

Python equivalent of Curl HTTP post

I am posting to Hudson server u开发者_JS百科sing curl from the command line using the following--

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

as shown in the hudson documentation..can I emulate the same thing using python..i don't want to use pyCurl or send this line through os.system()..is there ny way out using raw python??


import urllib2

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

where data is the encoded data you want to POST.

You can encode a dict using urllib like this:

import urllib

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


The modern day solution to this is much simpler with the requests module (tagline: HTTP for humans! :)

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!
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜