我正在使用Zeep通过SOAP与服务器通信。为了减少代码中的样板,如果目标函数接受了一些参数,我想自动将一些参数注入到我的SOAP调用中。像这样:
client = zeep.Client(...)
def call(function_name,**kwargs):
if has_parameter(function_name,'foo'):
kwargs.setdefault('foo','bar')
function = getattr(client.service,function_name)
return function(**kwargs)
call('someFunction',arg1=1,arg2=2)
我在has_parameter
部分中苦苦挣扎:我宁愿不对所有功能参数进行硬编码,也不宁愿通过反复试验动态地确定它们。据我所知,函数签名是服务的WSDL描述的一部分,因此应该有一种方法来获取它。
在Zeep中实现此目标的最佳方法是什么?我看过client.wsdl
,但到目前为止没有发现任何有用的信息。