[pyar] Web service de tipo WCF

Federico Manuel Echeverri Choux echeverrifm en gmail.com
Mie Ago 21 00:27:21 ART 2013


Hola!!! Muchisimas gracias Mariano
Lo voy a revisar

Saludos


El 20 de agosto de 2013 00:06, Mariano Reingart <reingart en gmail.com>escribió:

> Federico:
>
> Para variar, se ve que en el webservice que pasas no define los
> "bindings" en el archivo principal, sino que los importa en otros
> archivos.
> Te paso un archivo WSDL "unificado" que te debería ayudar (dentro de
> federico.zip), luego de descomprimirlo te conectarías y llamarías al
> webservice con:
>
> client = SoapClient(wsdl="federico.wsdl", ns="ns0", soap_ns="soapenv")
> client.TimbrarTest(comprobanteBytesZipped="1234")
> print retval['TimbrarTestResult']
>
> Más allá de eso, el método TimbrarTest recibe y devuelve un base64,
> ahí agregue un cambio para que te lo tome, al igual que le comenté a
> Mauricio, debés descargarte la versión de desarrollo de PySimpleSoap:
>
> hg clone https://code.google.com/p/pysimplesoap/
> cd pysimplesoap
> hg update wsdl_namespaces
>
> Te adjunto el código completo del test, aparentemente funcionaría pero
> como no tengo el dato que se envía en el parámetro
> comprobanteBytesZipped de TimbrarTest, el webservice me devuelve
> "a:InvalidSecurity An error occurred when verifying security for the
> message."
> Quizás también te falte algún encabezado.
>
> Sería bueno tener más datos para poder probar y hacer los ajustes
> definitivos para este caso.
>
> Cualquier cosa avisame,
>
> Sds
>
> Mariano Reingart
> http://www.sistemasagiles.com.ar
> http://reingart.blogspot.com
>
>
> 2013/8/18 Federico Manuel Echeverri Choux <echeverrifm en gmail.com>:
> > Se me olvido de ponerlo esto es todo lo que me da el pac
> >
> >
> https://digitalinvoicecfdi.com.mx/WS_WSDI/DigitalInvoice.WebServices.WSDI.Timbrado.svc
> >
> > Saludos
> >
> >
> > El 18 de agosto de 2013 12:10, Federico Manuel Echeverri Choux
> > <echeverrifm en gmail.com> escribió:
> >
> >> Hola!!! Mariano hice lo que me dices
> >>
> >> >>> from pysimplesoap.client import SoapClient, SoapFault
> >> >>> url =
> >> >>> '
> https://digitalinvoicecfdi.com.mx/WS_WSDI/DigitalInvoice.WebServices.WSDI.Timbrado.svc?wsdl
> '
> >> >>> client = SoapClient(url, ns="s")
> >>
> >> hasta ahi todo bien,
> >>
> >> pero pruebo con:
> >>
> >> >>> client.help('TimbrarTest')
> >> Traceback (most recent call last):
> >>   File "<stdin>", line 1, in <module>
> >>   File "pysimplesoap/client.py", line 214, in help
> >>     operation = self.get_operation(method)
> >>   File "pysimplesoap/client.py", line 166, in get_operation
> >>     for service_name, service in self.services.items():
> >> AttributeError: 'NoneType' object has no attribute 'items'
> >>
> >> y esto es todo lo que me dio el PAC
> >>
> >> Hice mal el help??
> >>
> >> Saludos
> >>
> >>
> >> El 18 de agosto de 2013 10:12, Mariano Reingart <reingart en gmail.com>
> >> escribió:
> >>
> >>> Federico:
> >>>
> >>> Para consumir (usar) un webservice con pysimplesoap sería similar a
> >>> suds , debes crear el cliente y llamar a los métodos.
> >>> No hace falta crear clases ni nada complejo, las estructuras de datos
> >>> se manejan con tipos simples de python, por lo que no deberías tener
> >>> algunos de los problemas de suds y otras librerías similares.
> >>>
> >>> Usando el ejemplo que dieron en otro email (tendrías que cambiar el
> >>> wsdl para tu caso):
> >>>
> >>> >>> from pysimplesoap.client import SoapClient
> >>> >>>
> >>> >>> WSDL = "
> http://pruebas.ecodex.com.mx:2044/ServicioSeguridad.svc?wsdl"
> >>> >>> client = SoapClient(wsdl=WSDL, ns="s")
> >>>
> >>> Luego podes inspeccionar client.services para ver que servicios y
> >>> métodos expone:
> >>>
> >>> {'Seguridad': {'documentation': '',
> >>>   'ports': {'PuertoSeguridad': {
> >>>       'location':
> >>> 'http://pruebas.ecodex.com.mx:2044/ServicioSeguridad.svc',
> >>>       'name': 'PuertoSeguridad',
> >>>       'operations': {'ObtenerToken': {
> >>>           'action':
> >>> 'http://Ecodex.WS.Model/2011/CFDI/Seguridad/ObtenerToken',
> >>>           'documentation': '',
> >>>           'header': None,
> >>>           'input': {'SolicitudObtenerToken': {
> >>>                         'RFC': str,
> >>>                         'TransaccionID': long}},
> >>>           'name': 'ObtenerToken',
> >>>           'output': {'RespuestaObtenerToken': {
> >>>                         'Token': str,
> >>>                         'TransaccionID': long}},
> >>>           'parts': {'input_body': None,
> >>>             'input_header': None,
> >>>             'output_body': None,
> >>>             'output_header': None}}},
> >>>       'port_type_name': 'Seguridad',
> >>>       'service_name': 'Seguridad',
> >>>       'soap_uri': 'http://schemas.xmlsoap.org/wsdl/soap/',
> >>>       'soap_ver': 'soap11',
> >>>       'transport': 'http://schemas.xmlsoap.org/soap/http'},
> >>>     'PuertoSeguridadSeguro': {
> >>>         'location':
> >>> 'https://pruebas.ecodex.com.mx:2045/ServicioSeguridad.svc',
> >>>         'name': 'PuertoSeguridadSeguro',
> >>>         'operations': {'ObtenerToken': {
> >>>             'action':
> >>> 'http://Ecodex.WS.Model/2011/CFDI/Seguridad/ObtenerToken',
> >>>             'documentation': '',
> >>>             'header': None,
> >>>             'input': {'SolicitudObtenerToken': {
> >>>                           'RFC': str,
> >>>                           'TransaccionID': long}},
> >>>             'name': 'ObtenerToken',
> >>>             'output': {'RespuestaObtenerToken': {
> >>>                           'Token': str,
> >>>                           'TransaccionID': long}},
> >>>             'parts': {'input_body': None,
> >>>             'input_header': None,
> >>>             'output_body': None,
> >>>             'output_header': None}}},
> >>>         'port_type_name': 'Seguridad',
> >>>         'service_name': 'Seguridad',
> >>>         'soap_uri': 'http://schemas.xmlsoap.org/wsdl/soap/',
> >>>         'soap_ver': 'soap11',
> >>>         'transport': 'http://schemas.xmlsoap.org/soap/http'}}}}
> >>>
> >>>
> >>> En 'operations' podes ver que tiene una operación ObtenerToken, podes
> >>> ver la firma con client.help:
> >>>
> >>> >>> print client.help('ObtenerToken')
> >>>
> >>> ObtenerToken(RFC=<type 'str'>, TransaccionID=<type 'long'>)
> >>>  -> {u'Token': <type 'str'>, u'TransaccionID': <type 'long'>}:
> >>>
> >>> Ahi te dice cuales son los parámetros, simplemente donde dice type str
> >>> o long tenes que reemplazar por el valor.
> >>> Te indica que devuelve un diccionario con dos claves Token y
> >>> TransaccionID.
> >>>
> >>> Para llamar al método remoto sería:
> >>>
> >>> >>> retval = client.ObtenerToken(RFC="Saraza", TransaccionID=1234)
> >>> >>> print retval['Token']
> >>> >>> print retval['TransaccionID']
> >>>
> >>> Te adjunto un ejemplo completo con lo que envió Mauricio.
> >>>
> >>> Cualquier cosa avisame y lo vemos,
> >>>
> >>> Sds
> >>>
> >>> Mariano Reingart
> >>> http://www.sistemasagiles.com.ar
> >>> http://reingart.blogspot.com
> >>>
> >>>
> >>> 2013/8/18 Federico Manuel Echeverri Choux <echeverrifm en gmail.com>:
> >>> > Hola!!!! gente, probe los que me dijeron el tuyo angel lo probe con
> dos
> >>> > webservice, uno me funciono y el otro me da error
> >>> > Esto Use:
> >>> >
> >>> > from suds.client import Client
> >>> > url = 'http://localhost:7080/webservices/WebServiceTestBean?wsdl'
> >>> > client = Client(url)
> >>> >
> >>> >
> >>> >
> >>> > el que te comente que me da error me devuelve esto:
> >>> >
> >>> >
> >>> >   File "/usr/lib/python2.7/dist-packages/suds/wsdl.py", line 177, in
> >>> > add_children
> >>> >     child = Factory.create(c, self)
> >>> >   File "/usr/lib/python2.7/dist-packages/suds/wsdl.py", line 920, in
> >>> > create
> >>> >     return fn(root, definitions)
> >>> >   File "/usr/lib/python2.7/dist-packages/suds/wsdl.py", line 432, in
> >>> > __init__
> >>> >     NamedObject.__init__(self, root, definitions)
> >>> >   File "/usr/lib/python2.7/dist-packages/suds/wsdl.py", line 90, in
> >>> > __init__
> >>> >     WObject.__init__(self, root, definitions)
> >>> >   File "/usr/lib/python2.7/dist-packages/suds/wsdl.py", line 58, in
> >>> > __init__
> >>> >     Object.__init__(self)
> >>> >   File "/usr/lib/python2.7/dist-packages/suds/sudsobject.py", line
> 132,
> >>> > in
> >>> > __init__
> >>> >     self.__metadata__ = Metadata()
> >>> > RuntimeError: maximum recursion depth exceeded
> >>> >
> >>> >
> >>> > Lo tuyo Mariano aun no lo entiendi muy bien, ahora me dedico a eso a
> >>> > ver que
> >>> > me sale.
> >>> >
> >>> > Que tan grave es que publique el link??
> >>> >
> >>> > es este: ( Modificado )
> >>> >
> >>> > https://webservice.com/WS_WSDI/WebServices.WSDI.Timbrado.svc?wsdl
> >>> >
> >>> > Saludos y Gracias
> >>> >
> >>> >
> >>> >
> >>> >
> >>> >
> >>> > El 15 de agosto de 2013 18:35, Angel Java Lopez <
> ajlopez2000 en gmail.com>
> >>> > escribió:
> >>> >>
> >>> >> Hola gente!
> >>> >>
> >>> >>
> >>> >> Federico, apenas si programo en Python, apenas lo conozco. Pero
> >>> >> cualquiera
> >>> >> que vaya a consumir WCF trata de sacar todo de lo que el WSDL (Web
> >>> >> Service
> >>> >> Description Language). Fijate que aca dice en general como
> obtenerlo:
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> http://www.warden.pl/2013/02/21/consuming-wsdl-web-services-with-perl-or-python/
> >>> >>
> >>> >> Y ahi usa una libreria suds
> >>> >> https://fedorahosted.org/suds/
> >>> >>
> >>> >> que dado el WSDL, te deja ya armado el metodo de invocacion, con
> monio
> >>> >> parece ;-)
> >>> >>
> >>> >> Te funciono?
> >>> >>
> >>> >> Nos leemos!
> >>> >>
> >>> >> Angel "Java" Lopez
> >>> >> @ajlopez
> >>> >>
> >>> >>
> >>> >>
> >>> >> 2013/8/15 Federico Manuel Echeverri Choux <echeverrifm en gmail.com>
> >>> >>>
> >>> >>> Hola!!!! gente, alguien hizo algo con webservice WCF?? alguna doc
> que
> >>> >>> me
> >>> >>> puedan pasar para ver si puedo hacer esto.
> >>> >>>
> >>> >>> Muchisimas gracias de antemano
> >>> >>>
> >>> >>>
> >>> >>> --
> >>> >>> Federico Manuel Echeverri Choux
> >>> >>> Vauxoo - OpenERP's Gold Partner
> >>> >>> mobile: (+521) 444-1-400683
> >>> >>> Tel: (+52) 444-8185539
> >>> >>> skype: echeverrifm
> >>> >>> web: http://www.vauxoo.com
> >>> >>> twitter: @echeverrifm
> >>> >>>            @vauxoo
> >>> >>>
> >>> >>> _______________________________________________
> >>> >>> pyar mailing list pyar en python.org.ar
> >>> >>> http://listas.python.org.ar/listinfo/pyar
> >>> >>>
> >>> >>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>> >>>
> >>> >>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> >>> >>> de
> >>> >>> Argentina - http://www.usla.org.ar
> >>> >>
> >>> >>
> >>> >>
> >>> >> _______________________________________________
> >>> >> pyar mailing list pyar en python.org.ar
> >>> >> http://listas.python.org.ar/listinfo/pyar
> >>> >>
> >>> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>> >>
> >>> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> de
> >>> >> Argentina - http://www.usla.org.ar
> >>> >
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > Federico Manuel Echeverri Choux
> >>> > Vauxoo - OpenERP's Gold Partner
> >>> > mobile: (+521) 444-1-400683
> >>> > Tel: (+52) 444-8185539
> >>> > skype: echeverrifm
> >>> > web: http://www.vauxoo.com
> >>> > twitter: @echeverrifm
> >>> >            @vauxoo
> >>> >
> >>> > _______________________________________________
> >>> > pyar mailing list pyar en python.org.ar
> >>> > http://listas.python.org.ar/listinfo/pyar
> >>> >
> >>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>> >
> >>> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> de
> >>> > Argentina - http://www.usla.org.ar
> >>>
> >>> _______________________________________________
> >>> pyar mailing list pyar en python.org.ar
> >>> http://listas.python.org.ar/listinfo/pyar
> >>>
> >>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>>
> >>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >>> Argentina - http://www.usla.org.ar
> >>
> >>
> >>
> >>
> >> --
> >> Federico Manuel Echeverri Choux
> >> Vauxoo - OpenERP's Gold Partner
> >> mobile: (+521) 444-1-400683
> >> Tel: (+52) 444-8185539
> >> skype: echeverrifm
> >> web: http://www.vauxoo.com
> >> twitter: @echeverrifm
> >>            @vauxoo
> >
> >
> >
> >
> > --
> > Federico Manuel Echeverri Choux
> > Vauxoo - OpenERP's Gold Partner
> > mobile: (+521) 444-1-400683
> > Tel: (+52) 444-8185539
> > skype: echeverrifm
> > web: http://www.vauxoo.com
> > twitter: @echeverrifm
> >            @vauxoo
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
Federico Manuel Echeverri Choux
Vauxoo - OpenERP's Gold Partner
mobile: (+521) 444-1-400683
Tel: (+52) 444-8185539
skype: echeverrifm
web: http://www.vauxoo.com
twitter: @echeverrifm
           @vauxoo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130820/ae0df1a9/attachment-0001.html>


More information about the pyar mailing list