В настоящее время я разрабатываю программу на Python 3, которая должна отправлять кусочно закодированное сообщение в POST-запросе на произвольный URL-адрес. Как описано в документах библиотеки Requests (см. « chunked-кодированные запросы » в разделе https://requests.readthedocs.io/en/master/user/advanced/), можно использовать Generator для указания фрагментированного закодированного сообщения. На данный момент я не могу проверить, выполняет ли мой генератор свою работу, потому что каждый раз, когда я пытаюсь распечатать тело сообщения запроса с
print(response.request.body)
, я получаю следующее:
<generator object generator at 0x03FEB530>
Например, я хочу отправить следующее сообщение в запросе. (с C ontent-Type: application / x- www-form-urlencoded)
x=FOO
В кодированном по частям сообщении тело сообщения должно выглядеть следующим образом:
5\r\n
x=FOO\r\n
0\r\n
\r\n
В целом запрос должен выглядеть следующим образом:
POST / HTTP/1.1
Host: example.com
Transfer-Encoding: chunked
5
x=FOO
0
Я написал свой собственный генератор и хотел спросить, является ли это правильным способом сделать это. Вы можете увидеть это во фрагменте кода ниже.
def generator():
var1 = "5\r\n"
var2= "x=FOO\r\n"
var3= "0\r\n\r\n"
x = var1.encode('utf8')
y = var2.encode('utf8')
z = var3.encode('utf8')
yield x
yield y
yield z
url = 'https://example.com'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0',
'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded',
'Transfer-Encoding': 'chunked'}
response = requests.post(url=url, data=generator(), headers=headers)
Отказ от ответственности: Я не хочу, чтобы мой генератор автоматически генерировал фрагментированную кодировку сообщения, я хочу отправить запрос с указанным c chunked закодированное сообщение, как показано выше.