Hola a todos, quería hacerles la siguiente consulta: Un amigo y yo estamos viendo en python usando requests y suds trabajando en memoria porque creemos que sería muy costoso el depender de un archivo.
Este es el código:
Código Python:
Ver originalfrom suds.client import Client
from suds.sudsobject import asdict
from suds.cache import NoCache
import requests
import simplejson as json
def get_wsdl_def(wsdl_url, headers, cacert, def_file):
if not (wsdl_url and cacert and headers):
print("\n\tFaltan parámetros")
else:
res = requests.get(wsdl_url, headers=headers, verify=cacert)
if res:
try:
with open(def_file, 'w') as f:
f.write(res.content)
res = True
except:
print("\n\tVerificar parámetros")
return res
if __name__ == '__main__':
client = Client("https://cotizaciones.bcu.gub.uy/wscotizaciones/servlet/awsbcucotizaciones?wsdl")
print client
# configurables
x_cacert = "Autoridad_Certificadora_Raiz_Nacional_de_Uruguay.crt" # agesic/correos
x_wsdl_url = "https://cotizaciones.bcu.gub.uy/wscotizaciones/servlet/awsbcucotizaciones?wsdl"
x_headers = {'a':'b'}
x_def_file = "/tmp/awsbcucotizaciones.xml"
get_wsdl_def(x_wsdl_url, x_headers, x_cacert, x_def_file)
wsdl_def_url = 'file://' + x_def_file
fdesde = "2017/10/11"
fhasta = "2017/10/11"
grupo = 2 # 1. mercado internacional 2. mercado local
moneda = {'item':2225} # Dolar USA Billete
ok = get_wsdl_def(x_wsdl_url, x_headers, x_cacert, x_def_file)
if ok:
#client = Client(wsdl_def_url, cache=NoCache())
client = Client(json.dumps(requests.get(wsdl_def_url, headers=x_headers, verify=x_cacert)), cache=NoCache())
cotiza_obj = client.factory.create("wsbcucotizacionesin")
cotiza_obj.FechaDesde = fdesde
cotiza_obj.FechaHasta = fhasta
cotiza_obj.Grupo = grupo
cotiza_obj.Moneda = moneda
ret = client.service.Execute(cotiza_obj)
cotizacion = asdict(ret.datoscotizaciones).items()[0][1][0]
fecha = cotizacion.Fecha.strftime("%d-%m-%Y")
print("\n\t %s \n\t Fecha: %s\n\t Tipo Comprador: %s \n" % (cotizacion.Nombre, fecha, cotizacion.TCV,))
else:
print("\n\t%s\n" % ("Algo salió mal... :( ",))
El error que nos da es éste:
Traceback (most recent call last):
File "/home/detectivejd/NetBeansProjects/Python/cotizacion_bcu/cotizaciones.py", line 40, in <module>
client = Client(json.dumps(requests.get(wsdl_def_url, headers=x_headers, verify=x_cacert)), cache=NoCache())
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 455, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 553, in send
adapter = self.get_adapter(url=request.url)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 598, in get_adapter
raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for 'file:///tmp/awsbcucotizaciones.xml'
No sé que nos sugieren para arreglar esto, esperamos sus respuestas y saludos.