2014-06-27 16 views
8

qui è la mia classe di web server:nessun modulo chiamato 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")) 

quando ho eseguito assistente ho ottenuto "name 'http' non è definito" dopo l'importazione http.server poi ho avuto questo "no modulo chiamato http.server"

risposta

11

http.server esiste solo in Python 3. in Python 2, è necessario utilizzare il modulo BaseHTTPServer:

from BaseHTTPServer import BaseHTTPRequestHandler 

dovrebbe funzionare bene.

+0

sì, ho provato questo, ma ho ottenuto "No module named http" –

+0

non funzionerà per me e più oltre sto usando python 2.7, allora come posso superare questo problema –

+0

@Phanivarma Sì, il mio male - salto prima che guardassi. Controlla la mia risposta aggiornata: 'http.server' è solo Python 3, ma c'è un modulo Py2 che puoi usare. – MattDMo

7

in Python prima di quanto v3 è necessario eseguire HTTP Server come

python -m SimpleHTTPServer 8069 
Problemi correlati