Duda con SoapPy.
nocreyente
nocreyentes en terra.es
Vie Ene 13 08:53:37 CET 2006
Buenas:
Cuando las cosas trabajando con una aplicación cliente/servidor se
complican, siempre queda el comodin del ethereal o cualquier otro
snifer. Puedes tratar de ver, que paquetes SOAP estas enviando al
server y recibiendo de el para acotar más el problema. Axis (motor de
SOAP de apache para Java) viene con un monitor que pudes poner en el
servidor para depurar las llamadas, lo mismo .NET viene con una
herramienta similar.
De todas formas es muy posible que el problema sea el tipo complejo que
devuelve el Web service. Tal como te dice chema en otro post, usa el
poder de la introspeccion (te comento un ejemplo en el codigo). Aunque
no recuerdo bien si el resultado es una de esas clases que en una
funcion por defecto te hace todo y no te enteras de nada al usar la
introspeccion. ¿Sabe alguien de una forma mejor de introspeccion que la
funcion dir?
Un saludo:
Javi
El 12/01/2006, a las 15:06, Joan Carles Jimenez escribió:
> Hola a todos.
>
> Tengo un servicio web hecho en mono que simplemente suma dos números y
> devuelve el resultado. La llamada la realizo de la siguiente manera ...
>
> def OnClickSuma(self, event):
> try:
> wsdl = "http://www2.jocajica.com/anaconda/Anaconda.wsdl"
> proxy = SOAPpy.WSDL.Proxy(wsdl)
>
> try:
> a = int(self.text_ctrl_1.GetValue())
> b = int(self.text_ctrl_2.GetValue())
>
> c = proxy.Suma(a, b)
>
print "Lo que hay en la variable c:", dir(c)
> self.text_ctrl_3.SetValue(c)
> except:
> print sys.exc_info()[0]
> raise
>
> except:
> print sys.exc_info()[0]
> raise
>
> event.Skip()
>
> ... pero siempre obtengo un 0 como resultado. Observando el fichero
> WSDL he
> visto que mono no genera un tipo simple para devolver el resultado
> sino que
> devuelve un tipo complejo:
>
> <types>
> <xs:schema elementFormDefault="qualified"
> targetNamespace="http://localhost/anaconda"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:element name="Suma">
> <xs:complexType>
> <xs:sequence>
> <xs:element minOccurs="1" maxOccurs="1" name="a"
> type="xs:int" />
> <xs:element minOccurs="1" maxOccurs="1" name="b"
> type="xs:int" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="SumaResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element minOccurs="1" maxOccurs="1" name="SumaResult"
> type="xs:int" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="int" type="xs:int" />
> </xs:schema>
> </types>
>
> ¿Alguna idea de como tratar este tipo con SoapPy? Gracias por
> adelantado.
>
>
> --
> Joan Carles Jiménez
> jjcarles en terra.es
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es