Python:BaseHTTPRequestHandler发布variables

鉴于最简单的HTTP服务器,我如何获得一个BaseHTTPRequestHandler后variables?

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer class Handler(BaseHTTPRequestHandler): def do_POST(self): # post variables?! server = HTTPServer(('', 4444), Handler) server.serve_forever() # test with: # curl -d "param1=value1&param2=value2" http://localhost:4444 

我只是想获得param1和param2的值。 谢谢!

 def do_POST(self): ctype, pdict = cgi.parse_header(self.headers.getheader('content-type')) if ctype == 'multipart/form-data': postvars = cgi.parse_multipart(self.rfile, pdict) elif ctype == 'application/x-www-form-urlencoded': length = int(self.headers.getheader('content-length')) postvars = cgi.parse_qs(self.rfile.read(length), keep_blank_values=1) else: postvars = {} ... 

我试图编辑post并被拒绝,所以这个代码的版本应该在Python 2.7和3.2上运行:

 from sys import version as python_version from cgi import parse_header, parse_multipart if python_version.startswith('3'): from urllib.parse import parse_qs from http.server import BaseHTTPRequestHandler else: from urlparse import parse_qs from BaseHTTPServer import BaseHTTPRequestHandler class RequestHandler(BaseHTTPRequestHandler): ... def parse_POST(self): ctype, pdict = parse_header(self.headers['content-type']) if ctype == 'multipart/form-data': postvars = parse_multipart(self.rfile, pdict) elif ctype == 'application/x-www-form-urlencoded': length = int(self.headers['content-length']) postvars = parse_qs( self.rfile.read(length), keep_blank_values=1) else: postvars = {} return postvars def do_POST(self): postvars = self.parse_POST() ... ...