0 down vote favorite I'm trying to create a simple http server with basic GET and POST functionality. The program is supposed to GET requests by printing out a simple webpage that greets a user and askes how he would rather be greeted. When the user enters a greeting of his choice, the webpage should now greet him as he had chosen.
While GET seems to be working fine, POST is not. I tried debugging by printing at every code execution and it seems to be getting stuck here: ctype, pdict = cgi.parse_header(self.headers.getheader('content-type')) I'll paste the code full code below, along with my terminal output. Code: from http.server import BaseHTTPRequestHandler, HTTPServer import cgi class webServerHandler(BaseHTTPRequestHandler): def do_GET(self): try: if self.path.endswith("/hello"): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() output = "" output += "<html><body>" output += "<h1>Hello!</h1>" output += '''<form method='POST' enctype='multipart/form-data' action='/hello'><h2>What would you like me to say?</h2><input name="message" type="text" ><input type="submit" value="Submit"> </form>''' output += "</body></html>" self.wfile.write(output.encode(encoding = 'utf_8')) print (output) return if self.path.endswith("/hola"): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() output = "" output += "<html><body>" output += "<h1>¡ Hola !</h1>" output += '''<form method='POST' enctype='multipart/form-data' action='/hello'><h2>What would you like me to say?</h2><input name="message" type="text" ><input type="submit" value="Submit"> </form>''' output += "</body></html>" self.wfile.write(output.encode(encoding = 'utf_8')) print (output) return except IOError: self.send_error(404, 'File Not Found: %s' % self.path) def do_POST(self): try: self.send_response(201) print("Sent response") self.send_header('Content-type', 'text/html') print("Sent headers") self.end_headers() print("Ended header") ctype, pdict = cgi.parse_header(self.headers.getheader('content-type')) print("Parsed headers") if ctype == 'multipart/form-data': fields = cgi.parse_multipart(self.rfile, pdict) messagecontent = fields.get('message') print("Receiver message content") output = "" output += "<html><body>" output += " <h2> Okay, how about this: </h2>" output += "<h1> %s </h1>" % messagecontent[0] output += '''<form method='POST' enctype='multipart/form-data' action='/hello'><h2>What would you like me to say?</h2><input name="message" type="text" ><input type="submit" value="Submit"> </form>''' output += "</body></html>" print(output) self.wfile.write(output.encode(encoding = 'utf_8')) print ("Wrote through CGI") except: pass def main(): try: port = 8080 server = HTTPServer(('', port), webServerHandler) print ("Web Server running on port", port) server.serve_forever() except KeyboardInterrupt: print (" ^C entered, stopping web server....") server.socket.close() if __name__ == '__main__': main() Terminal Output: Web Server running on port 8080 127.0.0.1 - - [28/Apr/2016 13:28:59] "GET /hello HTTP/1.1" 200 - <html><body><h1>Hello!</h1><form method='POST' enctype='multipart/form-data' action='/hello'><h2>What would you like me to say?</h2><input name="message" type="text" ><input type="submit" value="Submit"> </form></body></html> 127.0.0.1 - - [28/Apr/2016 13:29:09] "POST /hello HTTP/1.1" 201 - Sent response Sent headers Ended header As you can see, the POST function does not seem to go beyong the parse_header command. I cannot figure this out, and any help would be usefu! -- https://mail.python.org/mailman/listinfo/python-list