2012/11/6 Jose Caballero <jcaballero....@gmail.com>:
> 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

Saludos
--
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a