Sto giocando un po 'con Python 3.2.2 e voglio scrivere un semplice web server per accedere ad alcuni dati in remoto. Questi dati saranno generati da Python quindi non voglio usare SimpleHTTPRequestHandler dato che è un file server, ma un mio gestore personale.Scrittura del corpo di risposta con BaseHTTPRequestHandler
Ho copiato alcuni esempi da Internet ma sono bloccato perché la risposta outputstream si rifiuta di scrivere il contenuto del corpo.
Questo è il mio codice:
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()
quello che dovrebbe essere un codice corretto per la scrittura del corpo della risposta?
Grazie mille.
Edit:
L'errore è:
...
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
Ammetto che non ho le basi in Python :) quindi sono un po 'perso cercando di capire come lavorare con i tipi e gli strumenti per trasformarli ... – helios
dove si trova questa riga nel tuo codice? self.wfile.write (prueba) – spicavigo
Oops, mi dispiace. Questa è la traccia di un altro test (prueba = test). Lo aggiusterò. – helios