创建 zeep 客户端时如何定义资源的"base url"?



我正在尝试使用zeep解析WSDL文件。

import zeep
zeep.Client('https://sede.agenciatributaria.gob.es/static_files/Sede/Procedimiento_ayuda/G417/FicherosSuministros/V_1_1/WSDL/SuministroFactEmitidas.wsdl')

此操作失败并产生以下错误:

requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://sede.agenciatributaria.gob.es/static_files/Sede/Procedimiento_ayuda/G417/FicherosSuministros/V_1_1/WSDL/SuministroInformacion.xsd

据我所知,由于wsdl文件使用相对路径指向SuministroInformacion.xsd,因此zeep假设两个文件位于同一目录中。但是在这种情况下,所有的资源都位于另一个目录中。

我可以为资源指定一个基本url吗?如果没有,有没有办法解决这个问题?谢谢你!

服务WSDL被破坏。

schemaLocation表示与WSDL文档相同的文件夹,但是xsd实际上位于namespace的地址。

Zeep做了正确的事情,但它无法处理损坏的WSDL。

如果你可以访问该服务的提供者,告诉他们修复它。

如果他们不能修复它,那么下载WSDL,下载WSDL试图导入的所有XSD文件,将所有文件放在一个文件夹中,然后告诉zeep使用本地WSDL:

zeep.Client('C:\Download_Folder_Or_Whatever\SuministroFactEmitidas.wsdl')

这是一个可以工作的解决方案。正确的修复方法是让服务提供者修复它们的WSDL。

最新更新