2017-02-11 4 views
4

Ich versuche, einen lokalen HTTP-Server für Flask zu erstellen.ein Byte-ähnliches Objekt ist nicht erforderlich 'str'

Server erfolgreich gestartet wird, aber wenn ich versuche, die localhost laufen: 5000 in Web-Browser ich diesen Fehler bekommen


class webserverhandler(BaseHTTPRequestHandler): 

def do_GET(self): 
    try: 
     if self.path.endswith("/"): 
      self.send_response(200) 
      self.send_header('Content-Type','text/html') 
      self.end_headers() 

      output="" 
      output+="<html><body>Hello</body></html>" 

      self.wfile.write(output) 
      print (output) 
      return 

    except IOError: 
     self.send_error(404,"File Not Found %s" % self.path) 


def main(): 
try: 
    port=5000 
    server=HTTPServer(('',port),webserverhandler) 
    print ("webserver running on %s" % port) 
    server.serve_forever() 


except KeyboardInterrupt: 
    server.socket.close() 

-------------- --------------------ERROR----------------------------- ------------

webserver running on 5000 
127.0.0.1 - - [11/Feb/2017 17:59:36] "GET/HTTP/1.1" 200 - 
Exception happened during processing of request from ('127.0.0.1', 54027) 
Traceback (most recent call last): 
File "C:\Users\Jordan\AppData\Local\Programs\Python\Python36-32\lib\socketserver.py", line 317, in _handle_request_noblock 
self.process_request(request, client_address) 
File "C:\Users\Jordan\AppData\Local\Programs\Python\Python36-32\lib\socketserver.py", line 348, in process_request 
self.finish_request(request, client_address) 
File "C:\Users\Jordan\AppData\Local\Programs\Python\Python36-32\lib\socketserver.py", line 361, in finish_request 
self.RequestHandlerClass(request, client_address, self) 
File "C:\Users\Jordan\AppData\Local\Programs\Python\Python36-32\lib\socketserver.py", line 696, in __init__ 
self.handle() 
File "C:\Users\Jordan\AppData\Local\Programs\Python\Python36-32\lib\http\server.py", line 418, in handle 
self.handle_one_request() 
File "C:\Users\Jordan\AppData\Local\Programs\Python\Python36-32\lib\http\server.py", line 406, in handle_one_request 
method() 
File "webserver.py", line 14, in do_GET 
self.wfile.write(output) 
File "C:\Users\Jordan\AppData\Local\Programs\Python\Python36-32\lib\socketserver.py", line 775, in write 
self._sock.sendall(b) 
TypeError: a bytes-like object is required, not 'str' 

jemand kann mir helfen?

+3

Haben Sie versucht, 'self.wfile.write (output.encode())'? –

Antwort

5

Sie können Ihre output Variable in eine bytes_object wie folgt kodieren:

self.wfile.write(output.encode()) 
3

Es scheint, dass Sie Python3 verwenden, wobei Zeichenfolgenliterale standardmäßig Unicode-Objekte (str) sind. Verwenden Sie die b -prefix

output = b"" 
output += b"<html><body>Hello</body></html>" 

eine bytes -Objekt zu erstellen.

+0

Danke, dass es jetzt funktioniert – Zordan

Verwandte Themen