Piszę trochę z Pythonem 3.2.2 i chcę napisać prosty serwer WWW, aby uzyskać zdalny dostęp do niektórych danych. Te dane będą generowane przez Python, więc nie chcę używać SimpleHTTPRequestHandler, ponieważ jest to serwer plików, ale mój program obsługi.Zapisywanie treści odpowiedzi za pomocą BaseHTTPRequestHandler
Skopiowałem przykład z Internetu, ale utknąłem ponieważ strumień wyjściowy odpowiedzi odmawia napisania treści treści.
To jest mój kod:
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()
Jaki powinien być prawidłowy kod do pisania ciało odpowiedzi?
Wielkie dzięki.
Edit:
Błąd jest:
...
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
muszę przyznać, że nie mają podstaw w Pythonie :) więc jestem trochę zagubiony próbuje dowiedzieć się, jak pracować z typami i narzędzi do ich przekształcania ... – helios
gdzie jest ta linia w twoim kodzie? self.wfile.write (prueba) – spicavigo
Ups, przepraszam. To jest ślad z innego testu (prueba = test). Naprawię to. – helios