El 6 de noviembre de 2012 14:55, Carlos Zuniga <[email protected]>escribió:
> 2012/11/6 Jose Caballero <[email protected]>: > > Hola, > > > > > > > > como ejercicio puramente didáctico (por ahora) estoy haciendo algunas > > pruebas con las classes SimpleHTTP* que trae python [tiene que ser > > python2.4]. > > He conseguido arrancar un servicio httpd, y puedo navegar con un > 'browser' > > por los directorios. > > También he averiguado cómo modificar el 'output', escribiendo el > contenido > > en self.wfile > > > > No he sido capaz de averiguar cómo "parsear" los datos de 'input' en > caso de > > una llamada POST. > > He añadido un método do_POST(): > > > > > > class > MySimpleHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): > > ... > > def do_POST(self): > > ... > > self.wfile.write( 'mundo\n' ) > > > > > > Efectivamente, luego puedo hacer > > > > $ curl -d hola http://www.myserver.net:1234 > > mundo > > $ > > > > Sin embargo no he sido capaz de averiguar cómo quedarme con los datos de > > 'input' en una variable. En este caso sencillo simplemente 'hola', pero > > podría ser algo más complejo (por ejemplo un diccionario). > > Lo estoy intentando con la clase cgi, pero no lo consigo. > > No sé si el problema está en el comando curl en si mismo, que no está > > completo, o que aún no he encontrado el método de la clase cgi adecuado. > > > > Cualquier pista que me puedan dar será más que bien recibida. > > Los datos que se envía por un formulario POST se encuentran en los > headers del request. Dentro de tu método do_POST deberías poder > acceder a self.headers (que es un objeto del tipo MessageClass) para > ver los datos: > > http://docs.python.org/2/library/basehttpserver.html#BaseHTTPServer.BaseHTTPRequestHandler.headers > > Ya había intentado esa vía. Sin embargo, si hago print self.headers en do_POST(), esto es lo que obtengo: User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 Host: www.myserver.net:1234 Pragma: no-cache Accept: */* Content-Length: 4 Content-Type: application/x-www-form-urlencoded Connection: Keep-Alive X-BlueCoat-Via: F7D3AB2CA1943FBA No veo el 'input' por ninguna parte.
_______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
