Hola, necesito enviar ciertos datos a un servidor mediante el método POST, y analizar la respuesta que el servidor me devuelve. Este proceso se realiza varias veces, pasando distinta información en cada comunicación.
La comunicación se debe autenticar mediante un certificado PEM. Lo estoy intentando con urllib/urllib2, con un código más o menos como el siguiente (parte copiado de un blog que encontré en google): ------------------------------------------------------------------------------------------------------------------------------ import urllib import urllib2 import httplib def connect(url, data): class HTTPSClientAuthHandler(urllib2.HTTPSHandler): def __init__(self, key, cert): urllib2.HTTPSHandler.__init__(self) self.key = key self.cert = cert def https_open(self, req): # Rather than pass in a reference to a connection class, we pass in # a reference to a function which, for all intents and purposes, # will behave as a constructor return self.do_open(self.getConnection, req) def getConnection(self, host, timeout=300): return httplib.HTTPSConnection(host, key_file=self.key, cert_file=self.cert) opener = urllib2.build_opener(HTTPSClientAuthHandler('/tmp/pem_certificate', '/tmp/pem_certificate') ) urllib2.install_opener(opener) urlhandler = urllib2.urlopen(url, urllib.urlencode(data)) ret = urlhandler.read() return ret ret1 = connect(url, data1) print ret1 ret2 = connect(url, data2) print ret2 ret3 = connect(url, data3) print ret3 ------------------------------------------------------------------------------------------------------------------------------ Mi problema es que sólo la primera conexión funciona. Para la segunda y la tercera el servidor me devuelve un mensaje de error. Este mensaje, algo críptico, viene a decir que estoy estableciendo una comunicación sin autenticar. Sin embargo, el fichero PEM sigue ahí, uso el mismo para las tres conexiones. ¿Por qué funciona la primera vez y no las demás? Nota: no tengo acceso a los logs del servidor. Sólo sé lo que me devuelve como mensaje de error. Lo único que se me ocurre es algún problema de conexiones abiertas que deberían haber sido cerradas o algo similar. Si alguien me puede dar alguna pista estaré eternamente agradecido. Muchas gracias por adelantando. Jose
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/