Este es el código:
Código Python:
Ver original
from 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.