【问题标题】:Exception happened during processing of request from [duplicate]处理来自[重复]的请求期间发生异常
【发布时间】:2017-10-18 07:43:19
【问题描述】:

这是我想在 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'

【问题讨论】:

  • 我从来没有用 python 做过任何涉及 web 服务器的事情,但是从你可以看出你正在用错误的参数类型调用你的方法之一

标签: python exception webserver


【解决方案1】:

问题在于这个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()

【讨论】:

  • 完美解决它!谢谢!
猜你喜欢
  • 2015-12-14
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多