Python 如何使用pysimplesoap将值传递给wsdl客户机的方法

Python 如何使用pysimplesoap将值传递给wsdl客户机的方法,python,pysimplesoap,Python,Pysimplesoap,下面有一个简单的方法我想调用get contact definition from pysimplesoap.client import SoapClient client = SoapClient(wsdl="https://platform.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl") auth_token = client.ClientLogin(username = 'user', p

下面有一个简单的方法我想调用get contact definition

from pysimplesoap.client import SoapClient
client = SoapClient(wsdl="https://platform.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl")
auth_token = client.ClientLogin(username = 'user', password = 'pass',
                                 applicationKey = 'test')

#I got authenticated here

token=  auth_token['ClientLoginResult']

campaign_client =  SoapClient(wsdl="https://platform.mediamind.com/Eyeblaster.MediaMind.API/V2/CampaignService.svc?wsdl"
                                  ,trace = False)
_

我相信我不能在这里正确地传递参数。 这就是为什么会形成错误的请求

Show    
Response    

Name    Type    Description
Contact     ContactInfo     Returns the contact information used by ContactInfo
在WSDL客户机中,我可以看到下面的代码来获取带有参数的方法

test = {'UserSecurityToken' :token,'ContactID' : 1  }
data = campaign_client.GetContact(test )

您正试图从
dict
解压关键字参数,您需要使用
**kwarg
表示法:

def __getattr__(self, attr):
        """Return a pseudo-method that can be called"""
        if not self.services:  # not using WSDL?
            return lambda self=self, *args, **kwargs: self.call(attr, *args, **kwargs)
        else:  # using WSDL:
            return lambda *args, **kwargs: self.wsdl_call(attr, *args, **kwargs)

签出此Python文档页面:

谢谢@Lawrence,但仍然收到错误:%s无效的Args结构。错误:[u”参数键UserSecurityToken不在参数中。参数:{u'ContactID':},参数:{'ContactID':1,'UserSecurityToken':u'f38e6844-e9e4-46fd-b0c0-68ff85e313e7'}“]错误函数希望获取UserSecurityToken作为参数,因此您必须在不解压缩的情况下传递它,请检查更新。@sagar:我删除了更新,以前的解决方案应该有效。这是否有效:
campaign\u client.GetContact(UserSecurityToken=test['UserSecurityToken'],ContactId=test['conctid'])
?此外,请检查
令牌的值,它可能为空。创建后将其打印出来。没有仍然获取错误:%s“ConactId”尝试将ConatactID更改为“1”在使用campaign_client.GetContact(UserSecurityToken=test['UserSecurityToken'],ContactId=test['ContactId']…仍然低于错误错误:%s无效的参数结构。错误:[u]“参数项UserSecurityToken不在参数中。参数:{u'ContactID':},参数:{'ContactID':1,'UserSecurityToken':u'4bb80e33-ff69-486e-826f-b27ecd2396be'}”]
def __getattr__(self, attr):
        """Return a pseudo-method that can be called"""
        if not self.services:  # not using WSDL?
            return lambda self=self, *args, **kwargs: self.call(attr, *args, **kwargs)
        else:  # using WSDL:
            return lambda *args, **kwargs: self.wsdl_call(attr, *args, **kwargs)
data = campaign_client.GetContact(**test)