[Twisted-Python] Another silly XML-RPC question
Dave Peticolas
dave at krondo.com
Mon Aug 25 22:25:28 MDT 2003
On Mon, 2003-08-25 at 20:50, Steve Freitas wrote:
> Hi all,
>
> This is maybe just a Python library question, but I'm not sure.
>
> I'd like to set up an XML-RPC server function to accept a dictionary/struct.
> So I thought I'd do this...
>
> def xmlrpc_foo(self, **mydict):
>
> But when I send it a struct, it throws an error of '0 args expected, 1 given,'
> much like...
This will never work since XML-RPC doesn't support **kw arguments.
> >>> def blah(**myDict):
> >>> return myDict['x']
> >>>
> >>> print blah({'x':42, 'y':3})
>
> ...does. So under regular Python, the way to make this work fine is:
>
> >>> def blah(myDict):
> >>> return myDict['x']
> >>>
> >>> print blah({'x':42, 'y':3})
>
> But when I try this under twisted...
>
> def xmlrpc_foo(self, myDict):
> return myDict['x']
>
> I get a key error, saying strings are not callable.
>
> So how do I get a twisted xmlrpc function to accept a struct? I assume I have
> to take it into a string and somehow serialize it into a dictionary using
> XML-RPC magic I haven't learned about, as in...
>
> def xmlrpc_foo(self, myDict):
> ...magically transform myDict (a string) into myNewDict (a dict!)...
> return myNewDict['x']
>
> Any help is appreciated! Thanks!
No, you just send a python dictionary. XML-RPC will serialize
it as a struct and it will be converted back to a Python dict
before it is passed to your handler.
If you're using Twisted on the client side as well:
proxy.callRemote('foo', {'x':42})
dave
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: </pipermail/twisted-python/attachments/20030825/b51c9f48/attachment.sig>
More information about the Twisted-Python
mailing list