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