-1

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

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

Edit2:我不能使用任何外部库/模块,我必须使用普通的香草 python 2.4/java1.5/perl5.8.8,限制性政策,我的双手被束缚

4

1 回答 1

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()

...尽管如果客户端使用分块传输编码发送数据会变得更加复杂。

于 2013-06-19T14:13:51.407 回答