Python读取多行发布数据

时间:2013-06-19 13:49:15

标签: python httpserver python-2.4

我正在使用BaseHTTPRequestHandler来实现我的httpserver。我如何在do_PUT / do_POST中读取多行发布数据?

编辑:我正在尝试实现一个独立的脚本来管理一些自定义请求,比如服务器上的监听器,它整合/存档/从各种日志文件中提取,我不希望实现需要Web服务器的东西,我对python没有太多经验,如果有人能指出更好的解决方案,我将不胜感激。

Edit2:我不能使用任何外部库/模块,我必须使用普通的vanilla python 2.4 / java1.5 / perl5.8.8,限制性策略,我的双手并列

1 个答案:

答案 0 :(得分: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发送数据会变得更复杂。