使用BaseHTTPRequestHandler编写响应主体

6 浏览
0 Comments

使用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

0