Duda sobre un servicio web en xmlrpclib

NeCuDeCo necudeco en gmail.com
Mar Dic 12 12:46:23 CET 2006


TE dice q no esta permitido enviar un valor "None" por el servicio Web,
deberias asegurarte q tus variable no es None antes de enviarla, y si lo
fuera reemplazarla con un valor vacio, como un array sin elementos o una
cadena vacia.


On 12/12/06, Antonio Roncero <roncero en gmail.com> wrote:
>
> Bueno, en principio parece que ya funciona todo. He añadido ahora una
> funcion en el servicio web que actualiza un campo en una base de datos de
> mysql. Actualiza correctamente pero me da el siguiente error:
>
> C:\python cliente.py
> Traceback (most recent call last):
>   File "cliente.py", line 4, in ?
>     s.insertar(2,300,200)
>   File "C:\Python24\lib\xmlrpclib.py", line 1096, in __call__
>     return self.__send(self.__name, args)
>   File "C:\Python24\lib\xmlrpclib.py", line 1383, in __request
>     verbose=self.__verbose
>   File "C:\Python24\lib\xmlrpclib.py", line 1147, in request
>     return self._parse_response(h.getfile(), sock)
>   File "C:\Python24\lib\xmlrpclib.py", line 1286, in _parse_response
>     return u.close()
>   File "C:\Python24\lib\xmlrpclib.py", line 744, in close
>     raise Fault(**self._stack[0])
> xmlrpclib.Fault: <Fault 1: 'exceptions.TypeError:cannot marshal None
> unless
> allo
> w_none is enabled'>
>
> Esto son los scripts:
> Cliente:
>
> import xmlrpclib
> s = xmlrpclib.Server("http://192.168.2.2:8001")
> s.insertar(2,300,200)
>
> Servidor:
>
> def insertar(id,valor1,valor2):
>     import MySQLdb
>     db = MySQLdb.connect(host="localhost",
> user="root",passwd="xxxxx",db="base_datos")
>     c = db.cursor()
>     c.execute("UPDATE tabla SET campo1=%s , campo2=%s WHERE
> id=%s",(valor1,valor2,id))
>     db.close()
> from SimpleXMLRPCServer import SimpleXMLRPCServer
> s = SimpleXMLRPCServer(("",8001))
> s.register_function(insertar)
> s.serve_forever()
>
> El caso es que se actualizan bien los valores pero me sale el error y me
> gustaria saber a que se puede deber.
> Gracias.
>
>
>
>
> El día 3/12/06, Antonio Roncero <roncero en gmail.com> escribió:
> >
> > gracias... era eso. Ya funciona.
> >
> > El día 2/12/06, Arnau Sanchez <arnau en ehas.org> escribió:
> > >
> > > Antonio Roncero escribió:
> > >
> > > > accedo desde el ordenador 192.168.2.5 de la siguiente manera.
> > > >
> > > > import xmlrpclib
> > > > s = xmlrpclib.Server('http://192.168.2.2:8888')
> > > > print s.suma(2,3)
> > >
> > > Sería interesante que pegaras también el código del servidor, porque
> lo
> > > más
> > > probable es que estés haciendo "bind" sólo a la dirección local. Si
> > > tienes algo así:
> > >
> > > server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888))
> > >
> > > Prueba con esto:
> > >
> > > server = SimpleXMLRPCServer.SimpleXMLRPCServer(("", 8888))
> > >
> > > Si estás en *nix, puedes comprobar que efectivamente está escuchando a
> > > todo el
> > > mundo:
> > >
> > > #lsof -i :9999
> > > COMMAND   PID  USER   FD   TYPE  DEVICE SIZE NODE NAME
> > > ipython 22500 arnau    4u  IPv4 1194737       TCP *:8888 (LISTEN)
> > >
> > > ....
> > >
> > > Seguramente lo conozcas, pero por si acaso, aquí tienes un buen
> tutorial
> > > sobre
> > > el tema:
> >
> >
> http://www-128.ibm.com/developerworks/webservices/library/ws-pyth10.html
> > >
> > > Finalmente, espero que no necesites mucha velocidad, porque el XMLRPC
> > > que viene
> > > de serie con Python es desesperantemente lento!! una vez que tuve que
> > > usarlo en
> > > serio desistí y acabé haciendo mi propio RPC (cutre, sin duda, pero
> más
> > > rápido).
> > > Además, los módulos xmlrpclib y SimpleXMLRPCServer tienen ciertas
> > > incompatibilidades (que sólo aparecen si haces cosas más o menos
> raras,
> > > tampoco
> > > es preocupante).
> > >
> > > _______________________________________________
> > > Python-es mailing list
> > > Python-es en aditel.org
> > > http://listas.aditel.org/listinfo/python-es
> > >
> >
> >
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>



-- 
--------------------------
NeCuDeCo
Junta de Decanos de los Colegios de Notarios del Peru
http://necudeco.blogsome.com
http://apesol.org
Your Jugdment Day is NOW

sudo kills -9 $richard_penguin_signature




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