使用BaseHTTPRequestHandler编写响应主体
使用BaseHTTPRequestHandler编写响应主体
我正在使用Python 3.2.2进行一些实验,并想编写一个简单的Web服务器来远程访问一些数据。这些数据将由Python生成,所以我不想使用SimpleHTTPRequestHandler,因为它是一个文件服务器,我想使用自己的处理程序。
我从互联网上复制了一些示例,但我遇到了问题,因为响应的输出流拒绝写入正文内容。
这是我的代码:
import http.server import socketserver PORT = 8000 class MyHandler(http.server.BaseHTTPRequestHandler): def do_HEAD(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() print(self.wfile) self.wfile.write(b"Title goes here. ") self.wfile.write(b"This is a test.") # If someone went to "http://something.somewhere.net/foo/bar/", # then s.path equals "/foo/bar/". self.wfile.write(b"You accessed path: %s" % self.path.encode()) self.wfile.write(b"") self.wfile.close() try: server = http.server.HTTPServer(('localhost', PORT), MyHandler) print('Started http server') server.serve_forever() except KeyboardInterrupt: print('^C received, shutting down server') server.socket.close()
应该如何正确编写响应正文的代码?
非常感谢。
编辑:
错误是:
... File "server.py", line 16, in do_GET self.wfile.write("Title goes here. ") File "C:\Python32\lib\socket.py", line 297, in write return self._sock.send(b) TypeError: 'str' does not support the buffer interface