Вычисление длины контента с помощью Python
-
13-12-2019 - |
Вопрос
Я пытаюсь опубликовать сообщение, но каждый раз, когда я это делаю, я получаю ошибку 411 в ответе.Я использую библиотеку запросов в Python.
In [1]: r.post(url)
Out[1]: <Response [411]>
Итак, я указал длину контента h = {'content-length' : '0'}
и попробуй еще раз.
In [2]: r.post(url,h)
Out[2]: <Response [200]>
Так здорово, я добиваюсь успеха, однако никакая информация не публикуется.
Я думаю, мне нужно рассчитать длину контента, что имеет смысл, поскольку это может быть «обрезанием» сообщения.
Итак, мой вопрос: учитывая URL-адрес www.example.com/import.php?key=value&key=value
как я могу рассчитать content-length
?(на питоне, если возможно)
Решение
Выглядит странно, что вы используете post
метод без data
аргумент (но поместите данные в URL).
Посмотрите на пример из официальные запросы документации :
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text
{
"origin": "179.13.100.4",
"files": {},
"form": {
"key2": "value2",
"key1": "value1"
},
"url": "http://httpbin.org/post",
"args": {},
"headers": {
"Content-Length": "23",
"Accept-Encoding": "identity, deflate, compress, gzip",
"Accept": "*/*",
"User-Agent": "python-requests/0.8.0",
"Host": "127.0.0.1:7077",
"Content-Type": "application/x-www-form-urlencoded"
},
"data": ""
}
Другие советы
Отправка POST
запрос с пустым телом совершенно законен, если Content-Length
заголовок отправляется и устанавливается на 0
. Запросы обычно вычисляют значение для Content-Length
заголовок.Поведение, которое вы наблюдаете, вероятно, связано с проблемой 223 - Content-Length отсутствует.Хотя ошибка не устранена, похоже, проблема решена:
C:\>python
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> requests.__version__
'0.11.1'
>>> r = requests.post('http://httpbin.org/post?key1=valueA&key2=valueB')
>>> print r.content
{
"origin": "77.255.249.138",
"files": {},
"form": {},
"url": "http://httpbin.org/post?key1=valueA&key2=valueB",
"args": {
"key2": "valueB",
"key1": "valueA"
},
"headers": {
"Content-Length": "0",
"Accept-Encoding": "identity, deflate, compress, gzip",
"Connection": "keep-alive",
"Accept": "*/*",
"User-Agent": "python-requests/0.11.1",
"Host": "httpbin.org",
"Content-Type": ""
},
"json": null,
"data": ""
}