[Soap-Python] rpclib: anydict as a parameter question
Burak Arslan
burak.arslan at arskom.com.tr
Thu May 31 09:59:32 CEST 2012
Hi,
With @rpc, the first parameter is always the context object (ctx by
convention).
You should do either this:
@rpc(AnyDict,_returns=AnyDict)
def Ping(ctx, params):
or this:
@srpc(AnyDict,_returns=AnyDict)
def Ping(params):
best,
burak
On 31/05/12 10:35, Dennis Fischer wrote:
> Hello,
>
> I have question regarding soap server implementation using rpclib. I
> want to create a soap api with different methods. These methods should
> use a dict as a parameter to transfer different strings to the api.
> The server / client code are posted below. My problem is that, as seen
> in the [log] section, the variable 'params' in the [server] section is
> a WsgiMethodContext object, not the expected dict I want to use.
>
> What am I doing wrong here? Can anyone post an example of how to pass
> a dict as a parameter using rpclib?
>
> Thanks for your help :)
>
> [Server]
>
> # coding: utf-8
>
> from rpclib.decorator import rpc
> from rpclib.service import ServiceBase
> from rpclib.model.primitive import AnyDict
>
>
> class ApiInterface(ServiceBase):
>
> @rpc(AnyDict,_returns=AnyDict)
> def Ping(params):
>
> print("[PARAMS] " + str(params))
> return { 'result' : 1 }
>
> [Client]
>
> #! /usr/bin/python
> # coding: utf-8
>
> from suds.client import Client
>
> api = Client('http://api.soaptest.com:1234/?wsdl', cache=None)
>
> params = { }
> params['user'] = [ 'abc' ]
> result = api.service.Ping(params)
> print(str(result))
>
> [Result]
>
> (anyType){
> result = "1"
> }
>
> [Log]
>
> [Thu May 31 09:02:03 2012] [error] [PARAMS] WsgiMethodContext(
> [Thu May 31 09:02:03 2012] [error] \tfunction=<function Ping at
> 0x7f9fa4d648c0>,
> [Thu May 31 09:02:03 2012] [error] \tout_body_doc=None,
> [Thu May 31 09:02:03 2012] [error] \tout_string=None,
> [Thu May 31 09:02:03 2012] [error] \tlocale=None,
> [Thu May 31 09:02:03 2012] [error] \tservice_class=<class
> 'api.ApiInterface.ApiInterface'>,
> [Thu May 31 09:02:03 2012] [error]
> \tapp=<rpclib.application.Application object at 0x7f9fa4d66bd0>,
> [Thu May 31 09:02:03 2012] [error] \tout_header_doc=None,
> [Thu May 31 09:02:03 2012] [error] \tcall_end=None,
> [Thu May 31 09:02:03 2012] [error] \tout_object=None,
> [Thu May 31 09:02:03 2012] [error] \tudc=None,
> [Thu May 31 09:02:03 2012] [error] \tout_document=None,
> [Thu May 31 09:02:03 2012] [error] \tout_header=None,
> [Thu May 31 09:02:03 2012] [error] \tin_document=<Element
> {http://schemas.xmlsoap.org/soap/envelope/}Envelope at 0x7f9fa4d7bf00>,
> [Thu May 31 09:02:03 2012] [error] \tin_error=None,
> [Thu May 31 09:02:03 2012] [error] \tevent=<rpclib._base.EventContext
> object at 0x7f9fa4d6b050>,
> [Thu May 31 09:02:03 2012] [error]
> \ttransport=<rpclib.server.wsgi.WsgiTransportContext object at
> 0x7f9fa4d6b390>,
> [Thu May 31 09:02:03 2012] [error] \tin_body_doc=<Element
> {dd24.api}Ping at 0x7f9fa4d7bf50>,
> [Thu May 31 09:02:03 2012] [error] \tin_object=[],
> [Thu May 31 09:02:03 2012] [error]
> \t_MethodContext__descriptor=<rpclib._base.MethodDescriptor object at
> 0x7f9fa4d66410>,
> [Thu May 31 09:02:03 2012] [error] \tcall_start=1338447723.4348221,
> [Thu May 31 09:02:03 2012] [error] \tfrozen=True,
> [Thu May 31 09:02:03 2012] [error] \tin_string=<generator object
> __wsgi_input_to_iterable at 0x7f9fa4d7b4b0>,
> [Thu May 31 09:02:03 2012] [error]
> \tmethod_request_string='{dd24.api}Ping',
> [Thu May 31 09:02:03 2012] [error] \tout_error=None,
> [Thu May 31 09:02:03 2012] [error] \taux=None,
> [Thu May 31 09:02:03 2012] [error] \tin_header_doc=None,
> [Thu May 31 09:02:03 2012] [error] \tin_header=None,
> [Thu May 31 09:02:03 2012] [error] ))
>
>
> _______________________________________________
> Soap mailing list
> Soap at python.org
> http://mail.python.org/mailman/listinfo/soap
More information about the Soap
mailing list