Python 如何使用pysimplesoap将值传递给wsdl客户机的方法
下面有一个简单的方法我想调用get contact definitionPython 如何使用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
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)