Python-эквивалент Curl HTTP post - PullRequest
15 голосов
/ 14 июля 2010

Я отправляю сообщение на сервер Hudson, используя curl из командной строки, используя следующее:

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 ().

Ответы [ 2 ]

21 голосов
/ 14 июля 2010
import urllib2

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

где данные - это закодированные данные, которые вы хотите POST.

Вы можете закодировать dict, используя urllib следующим образом:

import urllib

values = { 'foo': 'bar' }
data = urllib.urlencode(values)
4 голосов
/ 27 апреля 2018

Современное решение этой проблемы намного проще с модулем запросов (слоган: HTTP для людей! :)

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!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...