Подтвердить что ты не робот

Каков самый чистый способ сделать HTTP POST с базовым auth в Python?

Каков самый чистый способ HTTP POST с Basic Auth в Python?

Использование только базовых библиотек Python.

4b9b3361

Ответ 1

Серьезно, просто используйте requests:

import requests
resp = requests.post(url, data={}, auth=('user', 'pass'))

Это чистая библиотека python, установка которой проста, как easy_install requests или pip install requests. Он имеет чрезвычайно простой и простой в использовании API, и он исправляет ошибки в urllib2, поэтому вам не нужно. Не делайте свою жизнь труднее из-за глупых требований, предъявляемых к себе.

Ответ 2

Обходные работы хаки:

`urllib.urlopen("https://username:[email protected]/path", data)` 

Многие люди не понимают, что старый синтаксис для указания имени пользователя и пароля в URL-адресе работает в urllib.urlopen. Кажется, что имя пользователя или пароль не требуют какой-либо кодировки, кроме, может быть, если пароль содержит символ @.

Ответ 3

если вы определяете URL-адрес, имя пользователя, пароль и некоторые последующие данные, это должно работать в Python2...

import urllib2

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
content = urllib2.urlopen(url, post_data)

пример из официальных документов Python, показывающих Basic Auth в urllib2:  * http://docs.python.org/release/2.6/howto/urllib2.html

полный учебник по базовой аутентификации с использованием urllib2:  * http://www.voidspace.org.uk/python/articles/authentication.shtml