как декодировать заголовки и тело HTTP-запроса в Python 3?

1

Я пишу экспериментальный асинхронный веб-сервер. Мне интересно о стандартном/ "лучшем" способе декодирования HTTP-запросов в python?

в основном то, что чтение из сокета дает мне, представляет собой представление байтов входящих данных необработанного запроса; как я могу превратить их в стандартные типы данных, такие как словари, списки значений и т.д.? есть ли хороший общий учебник, как это сделать и на что нужно следить (особенно в отношении кодировок и особенностей браузера)?

Теги:
python-3.x
http-headers
http

3 ответа

1

Это сработало для меня:

import StringIO, httplib

ucode_data = unicode( your_raw_data ,"utf-8")
str = StringIO.StringIO( ucode_data )
http_header = httplib.HTTPMessage(str,0)
http_header.readheaders()

print http_header.__dict__

но он не декодирует запрос (например, GET/index.html HTTP/1.2) - он будет декодировать остальное для вас, хотя

0

Не разбирайте сокеты; Абстрактные! Попробуйте httplib2. Это полная библиотека HTTP для Python 2 и 3, и она очень интуитивно понятна, хотя вам нужно ее загрузить и установить. Прочтите его пример использования для быстрого введения.

Dive Into Python 3 содержит очень хорошую главу об установке и используя httplib2, и почему это лучше, чем другие альтернативы, включая стандартную библиотеку; Я рекомендую вам прочитать это.

0

См.

20.10.4. Объекты HTTPMessage

В экземпляре http.client.HTTPMessage хранятся заголовки из ответа HTTP. Он реализуется с использованием класса mail.message.Message.

http://docs.python.org/py3k/library/http.client.html#httpmessage-objects

Вы можете использовать HTTPMessage как отдельный класс без вызова urllib (или любого другого эквивалента Python 3).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню