2017-02-11 58 views
4

我想爲Flask創建一個本地HTTP服務器。一個類似字節的對象是不需要'str'

服務器啓動成功,但是當我嘗試運行本地主機:5000在網頁瀏覽器我得到這個錯誤


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() 

-------------- - - - - - - - - - - 錯誤 - - - - - - - - - - - - - - - ------------

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' 

任何人都可以幫我嗎?

+3

你有沒有試過'self.wfile.write(output.encode())'? –

回答

5

您可以將output可變編碼成bytes_object這樣的:

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

看來你使用的是Python3,默認情況下字符串文字是unicode(str)對象。使用b -prefix

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

創建bytes -object。

+0

感謝它現在的工作 – Zordan

相關問題