我正在使用项目提供外部 WSDL 文件的 SOAP 服务。我正在使用 Python + Suds 连接到该服务。我遇到了问题,因为 (https) 服务 URL 如下所示:
/sipxconfig/services/UserService?wsdl
但是该 URL的 WSDL 与项目提供的外部 WSDL 文件不匹配。返回的 SOAP 文档与外部 WSDL 文件匹配。所以我的 suds 客户提出了一个错误。
到目前为止,我已经设法通过编写一个 suds 插件来“纠正”返回的 SOAP XML 以使其与动态创建的 WSDL(在 URL 处)相匹配来解决这个问题。但是,我希望有一种方法可以为 subs 客户端提供外部 WSDL 文件,然后将其切换为使用服务的 URL。
我试过这样的事情:
wsdl_file = os.path.abspath(args.wsdl_file)
client = Client("file://%s" % wsdl_file, transport=t, username=sip_user, password=sip_pwd, doctor=doctor)
client.set_options(location=url)
#Get the results.
user_search = client.factory.create("UserSearch")
user_search.byUserName = args.find_user
user_search.byFuzzyUserNameOrAlias = args.fuzzy
user_search.byGroup = args.group
result = client.service.findUser(user_search)
#^^^
#Error here!
但它最终导致MethodNotFound
异常。我在另一个终端上运行 netstat,我可以看到客户端没有与外部服务建立网络连接。
有其他人设法从文件中提供 Suds WSDL 吗?
谢谢,卡尔