我正在尝试制作一个 BaseHTTPServer 程序。我更喜欢使用 Python 3.3 或 3.2。我发现文档很难理解要导入的内容,但尝试从以下位置更改导入:
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
至:
from http.server import BaseHTTPRequestHandler,HTTPServer
然后导入工作,程序启动并等待 GET 请求。但是当请求到达时会引发异常:
File "C:\Python33\lib\socket.py", line 317, in write return self._sock.send(b)
TypeError: 'str' does not support the buffer interface
问题:是否有一个版本的 BaseHTTPServer 或 http.server 可以与 Python3.x 一起使用,还是我做错了什么?
这是我尝试在 Python 3.3 和 3.2 中运行的“我的”程序:
#!/usr/bin/python
# from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from http.server import BaseHTTPRequestHandler,HTTPServer
PORT_NUMBER = 8080
# This class will handle any incoming request from
# a browser
class myHandler(BaseHTTPRequestHandler):
# Handler for the GET requests
def do_GET(self):
print ('Get request received')
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
# Send the html message
self.wfile.write("Hello World !")
return
try:
# Create a web server and define the handler to manage the
# incoming request
server = HTTPServer(('', PORT_NUMBER), myHandler)
print ('Started httpserver on port ' , PORT_NUMBER)
# Wait forever for incoming http requests
server.serve_forever()
except KeyboardInterrupt:
print ('^C received, shutting down the web server')
server.socket.close()
该程序在 Python2.7 中部分工作,但在 2-8 次请求后给出此异常:
error: [Errno 10054] An existing connection was forcibly closed by the remote host