Tôi đang chơi một chút với Python 3.2.2 và muốn viết một máy chủ web đơn giản để truy cập một số dữ liệu từ xa. Dữ liệu này sẽ được tạo ra bởi Python vì vậy tôi không muốn sử dụng SimpleHTTPRequestHandler vì nó là một máy chủ tập tin, mà là một trình xử lý của riêng tôi.Viết nội dung phản hồi bằng BaseHTTPRequestHandler
Tôi đã sao chép một số ví dụ từ internet nhưng tôi bị kẹt vì dòng đầu ra phản hồi từ chối viết nội dung cơ thể.
Đây là mã của tôi:
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("<html><head><title>Title goes here.</title></head>")
self.wfile.write("<body><p>This is a test.</p>")
# If someone went to "http://something.somewhere.net/foo/bar/",
# then s.path equals "/foo/bar/".
self.wfile.write("<p>You accessed path: %s</p>" % self.path)
self.wfile.write("</body></html>")
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()
gì phải là một mã chính xác cho văn bản cho cơ phản ứng?
Cảm ơn rất nhiều.
Edit:
Lỗi này là:
...
File "server.py", line 16, in do_GET
self.wfile.write("<html><head><title>Title goes here.</title></head>")
File "C:\Python32\lib\socket.py", line 297, in write
return self._sock.send(b)
TypeError: 'str' does not support the buffer interface
Tôi thừa nhận tôi không có những điều cơ bản trong Python :) vì vậy tôi là một chút mất cố gắng tìm ra cách làm việc với các loại và các công cụ cho chuyển chúng ... – helios
dòng này ở đâu trong mã của bạn? self.wfile.write (prueba) – spicavigo
Rất tiếc, tôi xin lỗi. Đó là dấu vết từ một thử nghiệm khác (prueba = test). Tôi sẽ sửa chữa nó. – helios