Я не могу использовать пакет запросов Python (длинная история, давайте просто предположим, что я исчерпал все возможности для использования этого пакета)
Есть ли альтернативный пакет, который бы предоставил точную функциональность следующего кода?
import requests
requests.post(URL, data=DATA, auth=(USERNAME, PASSWORD), headers=HEADER)
3 ответа
Один из альтернативных способов, использование httplib
import httplib
import urllib
from base64 import b64encode
# your form
form_data = {'a':1 'b':2}
params = urllib.urlencode(form_data)
# build authorization
user_and_pass = b64encode(b"username:password").decode("ascii")
# headers
headers = {'Authorization': 'Basic %s' % user_and_pass}
# connection
conn = httplib.HTTPConnection("example.com")
conn.request('POST', '/v3/call_api', params, headers)
# get result
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
Если ваша единственная проблема - импорт из-за имени модуля, вы всегда можете импортировать по полному пути или изменить путь поиска модуля и сбросить его после импорта. Во избежание конфликтов вы можете использовать import requests as requests2
или что-то подобное. См. Следующий вопрос для первого варианта или документацию о пути поиска.
Как импортировать модуль с указанием полного пути?
https://docs.python.org/2/tutorial/modules.html#the-module-search-path
«HTTP-запрос будет POST вместо GET, если указан параметр data».
Итак, что-то вроде (я буду использовать пример изображения только потому, что это было так чертовски непонятно, чтобы выяснить):
import urllib
import urllib2
import numpy as np
import cv2
image_to_send = np.zeros(512, np.uint8)
buffer_image = \
np.array(cv2.imencode('.png', image_to_send)[1]).tostring()
post_data = \
urllib.urlencode((('img_type','.png'),('img_data',buffer_image)))
req = \
urllib2.urlopen('http://www.yourdestination.com/imageupload/', data=post_data)
Если вам нужна аутентификация, вам нужно создать подкласс urllib.FancyURLopener
и переопределить prompt_user_passwd
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.