2014-06-27 4 views
8

hier genannt ist meine Web-Server-Klasse:kein Modul http.server

import http.server 
import socketserver 

class WebHandler(http.server.BaseHTTPRequestHandler): 

    def parse_POST(self): 
     ctype, pdict = cgi.parse_header(self.headers['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['content-length']) 
      postvars = urllib.parse.parse_qs(self.rfile.read(length), 
              keep_blank_values=1) 
     else: 
      postvars = {} 
     return postvars 

    def do_POST(self): 
     postvars = self.parse_POST() 

     print(postvars) 

     # reply with JSON 
     self.send_response(200) 
     self.send_header("Content-type", "application/json") 
     self.send_header("Access-Control-Allow-Origin","*"); 
     self.send_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin"); 
     self.send_header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"); 
     self.end_headers() 
     json_response = json.dumps({'test': 42}) 
     self.wfile.write(bytes(json_response, "utf-8")) 

wenn i Server ausgeführt i "name 'http' ist nicht definiert" bekam nach dem Import http.server dann habe ich dieses „no-Modul genannt http.server“

Antwort

11

http.server existiert nur in Python 3. in Python 2, sollten Sie das BaseHTTPServer Modul verwenden:

from BaseHTTPServer import BaseHTTPRequestHandler 

sollte gut funktionieren.

+0

Ja, ich versucht, dies laufen, aber ich habe „kein Modul namens http“ –

+0

es wird nicht für mich arbeiten und mehr über die ich benutze Python 2.7, dann, wie kann ich dieses Problem überwinden –

+0

@Phanivarma Ja, mein Bad - sprang, bevor ich schaute. Überprüfen Sie meine aktualisierte Antwort: 'http.server' ist Python 3-only, aber es gibt ein Py2-Modul, das Sie verwenden können. – MattDMo

7

In Python früher als v3 Sie müssen HTTP-Server als

python -m SimpleHTTPServer 8069