Каков самый чистый способ сделать HTTP POST с базовым auth в Python?
Каков самый чистый способ HTTP POST с Basic Auth в Python?
Использование только базовых библиотек Python.
Ответы
Ответ 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