Estoy jugando un poco con Python 3.2.2 y quiero escribir un servidor web simple para acceder a algunos datos de forma remota. Python generará estos datos, por lo que no quiero usar SimpleHTTPRequestHandler ya que es un servidor de archivos, sino un controlador propio.Cuerpo de respuesta de escritura con BaseHTTPRequestHandler
He copiado algunos ejemplos de Internet, pero estoy atascado porque la respuesta outputtream se niega a escribir el contenido del cuerpo.
Este es mi código:
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()
Lo que debería haber un código correcto para escribir el cuerpo de la respuesta?
Muchas gracias.
Editar:
El error es:
...
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
que admitir que no tiene los fundamentos en Python :) así que estoy un poco perdido tratando de encontrar la manera de trabajar con los tipos y las herramientas para su transformación ... – helios
¿dónde está esta línea en tu código? self.wfile.write (prueba) – spicavigo
Oops, lo siento. Esa es la huella de otra prueba (prueba = prueba). Lo arreglaré. – helios