2017-10-18 174 views
0

这里是我的代码我想在localhost:8080上打开一个服务器。在处理请求时发生异常

from http.server import BaseHTTPRequestHandler, HTTPServer 
class WebServerHandler(BaseHTTPRequestHandler): 

    def do_GET(self): 
     try: 
      if self.path.endswith("/hi"): 
       self.send_response(200) 
       self.send_header('Content-type', 'text/html') 
       self.end_headers() 
       message = "" 
       message += "<html><body>Hello!</body></html>" 
       self.wfile.write(message) 
       print (message) 
       return 
     except IOError: 
      self.send_error(404, 'File Not Found: %s' % self.path) 


def main(): 
    try: 
     port = 8080 
     server = HTTPServer(('', port), WebServerHandler) 
     print ("Web Server running on port %s" % port) 

     server.serve_forever() 
    except KeyboardInterrupt: 
     print (" ^C entered, stopping web server....") 
     server.socket.close() 

if __name__ == '__main__': 
    main() 

,当我打开我应该得到一个白色的网页用字服务器“你好!”写在它上面。

但是,当我打开网页我有一个白色的页面,我的终端上,我有这样的:

Exception happened during processing of request from ('10.0.2.2',49701) 
Traceback (most recent call last): 
    File "/usr/lib/python3.5/socketserver.py", line 313, in 
_handle_request_noblock 
    self.process_request(request, client_address) 
    File "/usr/lib/python3.5/socketserver.py", line 341, in 
process_request 
    self.finish_request(request, client_address) 
    File "/usr/lib/python3.5/socketserver.py", line 354, in 
finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "/usr/lib/python3.5/socketserver.py", line 681, in __init__ 
    self.handle() 
    File "/usr/lib/python3.5/http/server.py", line 422, in handle 
    self.handle_one_request() 
    File "/usr/lib/python3.5/http/server.py", line 410, in 
handle_one_request 
    method() 
    File "webserver.py", line 14, in do_GET 
    self.wfile.write(message) 
    File "/usr/lib/python3.5/socket.py", line 593, in write 
    return self._sock.send(b) 
TypeError: a bytes-like object is required, not 'str' 
+0

我从来没有做过任何涉及Web服务器与python,但从什么可以看到你打电话给你的方法之一与错误的参数类型 – WhatsThePoint

回答

0

问题是与此self.wfile.write(message)线

from http.server import BaseHTTPRequestHandler, HTTPServer 
class WebServerHandler(BaseHTTPRequestHandler): 

def do_GET(self): 
    try: 
     if self.path.endswith("/hi"): 
      self.send_response(200) 
      self.send_header('Content-type', 'text/html') 
      self.end_headers() 
      message = "" 
      message += "<html><body>Hello!</body></html>" 
      self.wfile.write(message.encode('utf-8')) 
      print (message) 
      return 
    except IOError: 
     self.send_error(404, 'File Not Found: %s' % self.path) 


def main(): 
    try: 
     port = 8080 
     server = HTTPServer(('', port), WebServerHandler) 
     print ("Web Server running on port %s" % port) 

     server.serve_forever() 
    except KeyboardInterrupt: 
     print (" ^C entered, stopping web server....") 
     server.socket.close() 

if __name__ == '__main__': 
    main() 
+0

完美的解决它!谢谢 ! –

相关问题