domingo, 22 de septiembre de 2013

Codificando en Python peticiones POST de http

De la serie bocaditos de código ...

Hola, iniciamos una pequeña serie de programación python sobre la red.

En este caso os presento un pequeño procedimiento para realizar una petición POST de http e imprimir el resultado. No os voy a complicar con parseado (¿existe este palabro?) de la respuesta, ni los parámetros de llamada al programa de ejemplo, centrémonos en la rutina de la llamada.

Un requisito: para validar el funcionamiento podríamos preparar una maqueta con servidor web, cgi o equivalente. Pero casualmente, he encontrado un servicio publicado por Henry Cipolla que nos permite validar la llamada y el paso de parámetros via post, podeis encontrarlo en  http://www.posttestserver.com/ asi como su manual de instrucciones que permite verificar a posteriori los datos de las variables de entorno y los parámetros enviados al servidor.

Aquí va el código:


#!/usr/bin/python
# postExample.py Version: 1.0
#
# Execucion: python postExample.py

import urllib
import urllib2

# Constants
ADRECA = "http://www.posttestserver.com/post.php"

def requestData(par1, par2, timeout):
    query_args = {'p1':par1, 'p2':par2}
    print query_args
    encoded_args = urllib.urlencode(query_args)
    r = urllib2.urlopen(ADRECA, encoded_args, timeout)
    return r.read()

if __name__ == '__main__':
	print "Output: %s" %requestData(11, 22, 10)