我已经看到了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/