Duda con SoapPy.

Antonio Beamud Montero antonio.beamud en linkend.net
Vie Ene 13 09:50:00 CET 2006


El jue, 12-01-2006 a las 15:06 +0100, 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)
>                 
>                 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.

Usa la depuración de SOAPpy para ver que forma tienen los mensajes soap
y que te está devolviendo antes de que el cliente haga el
unmarshalling...

SOAPpy.Config.debug = 1
SOAPpy.Config.BuildWithNoType = 1
SOAPpy.Config.BuildWithNoNamespacePrefix = 1
c = proxy.Suma(a, b)
print c
Saludos.

> 

------------ próxima parte ------------
_______________________________________________
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