我已经看到了this问题,但我希望能够访问处理程序外部的POST数据。

有没有办法做到这一点?

以下是代码:

import BaseHTTPServer

HOST_NAME = ''
PORT_NUMBER=8088

postVars = ''

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):

    def do_POST(s):
        s.send_response(200)
        s.end_headers()
        varLen = int(s.headers['Content-Length'])
        postVars = s.rfile.read(varLen)
        print postVars

server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)

try:
    httpd.handle_request()
except KeyboardInterrupt:
    pass

print postVars
httpd.server_close()

postVars在Handler期间被赋值,但在MyHandler之后不赋值

最佳答案

这是因为postVars在HTTPServer创建的MyHandler实例中受到本地影响。如果要访问它,请在postVars方法开始时将do_POST声明为全局变量。

def do_POST(s):
  global postVars
  s.send_response(200)
  s.end_headers()
  varLen = int(s.headers['Content-Length'])
  postVars = s.rfile.read(varLen)

无论如何,我不确定要通过使用服务器和requestHandler上下文外部的变量来实现什么。

关于python - 扩展BaseHTTPRequestHandler-获取发布的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6204029/

10-11 17:39