如何正确调用SOAP接口的checkUser(param: ns1:UserAuthParam)方法?
正确调用checkUser SOAP函数的方法
从你提供的WSDL定义和zeep生成的服务文档可以明确:checkUser方法仅接受一个名为param的参数,该参数是UserAuthParam类型对象,而非直接传入userId和password作为独立参数。你之前的调用方式不符合方法签名,因此报错。
有两种常见的正确调用方式:
方法1:直接传递字典构造参数
直接将userId和password封装为字典,作为param参数的值传入:
import zeep client = zeep.Client(wsdl="UserCheck.wsdl") # 注意:WSDL中userId是xsd:string类型,建议传入字符串格式的值 res = client.service.checkUser(param={'userId': '12', 'password': 'kkkxxx'})
方法2:使用zeep类型工厂创建对象
通过zeep的get_type方法获取UserAuthParam类型,再构造实例传入:
import zeep client = zeep.Client(wsdl="UserCheck.wsdl") # 获取UserAuthParam类型 UserAuthParam = client.get_type('ns1:UserAuthParam') # 构造参数对象 auth_param = UserAuthParam(userId='12', password='kkkxxx') # 调用方法 res = client.service.checkUser(param=auth_param)
额外注意事项
WSDL中定义userId的类型是xsd:string,即便你的用户ID是数字,也建议传递字符串类型的值(比如示例中的'12'而非12),避免因类型不匹配导致的额外错误。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

