Servicios web

Ernesto Revilla erny en sicem.biz
Mie Jun 8 19:57:17 CEST 2005


para ver lo que devuelve el servidor, simplemente haz:

cita = server.getCita('2213')
print cita


No hace falta definir/declarar la estructura en el cliente. Puedes 
probar el tipo de cita con:

type(cita)


Si es de tipo de cadena, tu servidor no te manda el mensaje correcto.
Si quieres ver lo que te manda (xml) puedes hacer:

from SOAPpy import Config
Config.debug = 1

y después hacer la llamada y te indica todos los mensajes intercambiados.

Erny

azabel escribió:

>gracias por responder tan rápido,
>
>este es el cliente:
>
>#!/usr/bin/python 
>import SOAPpy
>from SOAPpy import SOAPProxy
>
>server = SOAPProxy("http://localhost/PFC/GestorWebCitas.php") 
>
>id_cita=0
>fecha=""
>hora=""
>descripcion=""
>
>cita = SOAPpy.structType()
>
>cita._addItem('id_cita',id_cita)
>cita._addItem('fecha', fecha)
>cita._addItem('hora', hora)
>cita._addItem('descripcion', descripcion)
>
>cita = server.getCita('2213')
>
>  
>
Esto qué es???? se supone que esta última instrucción es algo que

¿No será que quieres leer sim

>c = cita._asdict() <- No lo reconoce
>print c['hora'] 
>
>mientras que la estructura del servidor esta definida con nusoap asi:
>
>$server->wsdl->addComplexType(
>    'Cita',
>    'complexType',
>    'struct',
>    'all',
>    '',
>    array(
>        'id_cita' => array('name' => 'id_cita', 'type' => 'xsd:int'),
>        'fecha' => array('name' => 'fecha', 'type' => 'xsd:string'),
>        'hora' => array('name' => 'hora', 'type' => 'xsd:string'),
>	'descripcion' => array('name' => 'descripcion', 'type' => 'xsd:string')
>    )
>);
>
>y el wsdl que se genera es:
>
><definitions targetNamespace="urn:GestorWebCitas">
>-
>	<types>
>-
>	<xsd:schema targetNamespace="urn:GestorWebCitas">
><xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
><xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
>-
>	<xsd:complexType name="Cita">
>-
>	<xsd:all>
><xsd:element name="id_cita" type="xsd:int"/>
><xsd:element name="fecha" type="xsd:string"/>
><xsd:element name="hora" type="xsd:string"/>
><xsd:element name="descripcion" type="xsd:string"/>
></xsd:all>
></xsd:complexType>
></xsd:schema>
></types>
>-
>	<message name="getCitaRequest">
><part name="fecha" type="xsd:string"/>
></message>
>-
>	<message name="getCitaResponse">
><part name="return" type="tns:Cita"/>
></message>
>-
>	<portType name="GestoresWebCitasPortType">
>-
>	<operation name="getCita">
><documentation>Devuelve una cita en una determinada
>fecha</documentation>
><input message="tns:getCitaRequest"/>
><output message="tns:getCitaResponse"/>
></operation>
></portType>
>-
>	<binding name="GestoresWebCitasBinding"
>type="tns:GestoresWebCitasPortType">
><soap:binding style="rpc"
>transport="http://schemas.xmlsoap.org/soap/http"/>
>-
>	<operation name="getCita">
><soap:operation soapAction="urn:GestoresWebCitas#getCita" style="rpc"/>
>-
>	<input>
><soap:body use="encoded" namespace="urn:GestoresWebCitas"
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
></input>
>-
>	<output>
><soap:body use="encoded" namespace="urn:GestoresWebCitas"
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
></output>
></operation>
></binding>
>-
>	<service name="GestoresWebCitas">
>-
>	<port name="GestoresWebCitasPort"
>binding="tns:GestoresWebCitasBinding">
><soap:address location="http://localhost/PFC/GestorWebCitas.php"/>
></port>
></service>
></definitions>
>
>
>El mié, 08-06-2005 a las 18:48 +0200, Antonio Beamud Montero escribió:
>  
>
>>El mié, 08-06-2005 a las 18:37 +0200, azabel escribió:
>>    
>>
>>>gracias por la respuesta, pero no me reconce la función:
>>>
>>>    c = cita._asdict()
>>>AttributeError: 'str' object has no attribute '_asdict'
>>>
>>>
>>>      
>>>
>>server que es? si server.getCita() devuelve un objeto de tipo estructura
>>esto te tiene que funcionar. Que XML devuelve en el mensaje SOAP?
>>
>>    
>>
>>>>>t = SOAPpy.structType()
>>>>>t._addItem('valor', 3)
>>>>>t['valor']
>>>>>          
>>>>>
>>3
>>    
>>
>>>El mié, 08-06-2005 a las 16:11 +0200, Antonio Beamud Montero escribió:
>>>      
>>>
>>>>El mié, 08-06-2005 a las 13:53 +0200, azabel escribió:
>>>>        
>>>>
>>>>>Hola, primero saluda a todos porque es mi primer mensaje en la lista.
>>>>>
>>>>>Estoy realizando un proyecto cliente-servidor. El servidor programado en
>>>>>php proveera de servicios web (lo estoy desarrollando con el toolkit
>>>>>nusoap). Por otro lado la parte cliente la estoy desarrollando en python
>>>>>con SOAPpy. 
>>>>>
>>>>>El problema es que necesito enviar una estructura de datos desde el
>>>>>servido al cliente, y no consigo que el cliente recoja esa estructura.
>>>>>Tengo algo asi:
>>>>>
>>>>>cita = SOAPpy.structType()
>>>>>cita._addItem('id_cita',id_cita)
>>>>>
>>>>>cita._addItem('fecha', fecha)
>>>>>cita._addItem('hora', hora)
>>>>>cita._addItem('descripcion', descripcion)
>>>>>
>>>>>cita = server.getCita('2213')
>>>>>          
>>>>>
>>>>c = cita._asdict()
>>>>print c['hora']
>>>>
>>>>        
>>>>
>>>>>y no tengo ni idea de como acceder a uno de los campos, por ejemplo la
>>>>>hora.
>>>>>
>>>>>
>>>>>salu2 y gracias
>>>>>
>>>>>
>>>>>          
>>>>>




---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0523-4, 08/06/2005
Comprobado en: 08/06/2005 19:57:19
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com




Más información sobre la lista de distribución Python-es