2013-06-19 2 views
-1

Я использую BaseHTTPRequestHandler для реализации моего httpserver. Как я читаю многострочные данные в моем do_PUT/do_POST?Python читает многострочные данные post

Редактировать: Я пытаюсь реализовать автономный скрипт, который отбирает некоторые пользовательские запросы, что-то вроде слушателя на сервере, который объединяет/архивирует/извлекает из разных файлов журнала, я не хочу реализовывать что-то, что требует веб-сервера , У меня нет большого опыта работы на python, я был бы признателен, если бы кто-нибудь мог указать на лучшее решение.

Edit2: Я не могу использовать внешние библиотеки/модули, я должен сделать с простой ванили питона 2.4/java1.5/perl5.8.8, ограничительная политика, мои руки связаны

+1

вы можете показать текущие исследования, домашние задания, код и т. Д.? – tenstar

+0

@ That1Guy post_data = urlparse (self.rfile.read (length) .decode ('utf-8')) возвращает кортеж, для многострочной строки каждая строка является кортевым значением, для одной строки (curl --data "test") данные всегда являются третьим элементом кортежа, мой вопрос заключается в том, в какой момент я должен прекратить чтение кортежа для многострочного – Rnet

+1

@ user2433215 Я бы хотел, чтобы я был молодым, чтобы это было моим домашним кодом, спасибо – Rnet

ответ

5

Получение запроса тело так же просто, как чтение от 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() 

... хотя это становится более сложным, если клиент отправляет данные с помощью chunked transfer encoding.

+0

Спасибо, да, теперь я вижу, что моя проблема заключалась в кодировании передачи с передачей, я переключился на создание Java-сервлета – Rnet

Смежные вопросы