Python читать многострочный пост данных
Я использую BaseHTTPRequestHandler для реализации моего http-сервера. Как мне прочитать данные многострочного поста в моем do_PUT/do_POST?
Изменить: я пытаюсь реализовать автономный сценарий, который обслуживает некоторые пользовательские запросы, что-то вроде прослушивателя на сервере, который объединяет / архивирует / извлекает из различных файлов журнала, я не хочу реализовывать то, что требует веб-сервера, я не У меня нет большого опыта работы с Python, я был бы признателен, если бы кто-то мог указать лучшее решение.
Edit2: я не могу использовать какие-либо внешние библиотеки / модули, я должен обойтись с простым vanilla python 2.4/java1.5/perl5.8.8, ограничительные политики, мои руки связаны
1 ответ
Получение тела запроса так же просто, как чтение из self.rfile
, но вы должны будете знать, сколько читать, если клиент используетConnection: keep-alive
, Примерно так будет работать, если клиент укажетContent-Length
заголовок...
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class RequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
print post_data
server = HTTPServer(('', 8000), RequestHandler)
server.serve_forever()
... хотя это становится более сложным, если клиент отправляет данные, используя кодирование передачи по частям.