Duda con SOAPpy y los servicios web con Mono
Chema Cortes
py en ch3m4.org
Vie Ene 13 15:08:17 CET 2006
Joan Carles Jimenez escribió:
> Hola de nuevo.
>
> He activado el debug del SOAPpy para ver la salida, tal y como me habeis
> dicho. Investigando un poco mas he visto que el problema es que el servicio
> web ya no recibe bien los parámetros.
>
> El servicio web en mono es el siguiente:
>
> [WebMethod(Description="Suma dos valores.")]
> public int Suma(int a, int b) {
> Console.WriteLine("Executing WS ...");
> Console.WriteLine("a = " + a);
> Console.WriteLine("b = " + b);
> return a+b;
> }
>
> Y la llamada desde Python la hago de la siguiente manera:
>
> a = int(self.text_ctrl_1.GetValue())
> b = int(self.text_ctrl_2.GetValue())
>
> SOAPpy.Config.debug = 1
> SOAPpy.Config.BuildWithNoType = 1
> SOAPpy.Config.BuildWithNoNamespacePrefix = 1
>
> c = proxy.Suma(a, b)
>
> print (c)
> print (dir(c))
>
> self.text_ctrl_3.SetValue(c)
>
> La salida que tengo por pantalla, por la parte de Mono, es:
>
> Executing WS ...
> a = 0
> b = 0
>
> Como veis, sean cuales sean los valores introducidos para "a" y "b", sólo
> recibe el valor "0" y eso que segun la salida de SOAPpy, "a" y "b" tienen los
> valores "1" y "2":
>
> *** Outgoing SOAP ******************************************************
> <?xml version="1.0" encoding="UTF-8"?>
> <SOAP-ENV:Envelope
> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/1999/XMLSchema">
> <SOAP-ENV:Body>
> <Suma SOAP-ENC:root="1">
> <v1 xsi:type="xsd:int">1</v1>
> <v2 xsi:type="xsd:int">2</v2>
> </Suma>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> ************************************************************************
> *** Incoming SOAP ******************************************************
> <?xml version="1.0" encoding="utf-8"?><soap:Envelope
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><SumaResponse
> xmlns="http://localhost/anaconda"><SumaResult>0</SumaResult></SumaResponse></soap:Body></soap:Envelope>
> ************************************************************************
>
> ¿Alguna manera de poder trabajar con SOAPpy y Mono?
Creo que .Net es algo particular con los servicios web. Prueba a cambiar:
c = proxy.Suma(a, b)
por
c = proxy.Suma(a=a, b=b)
Más información sobre la lista de distribución Python-es