python - 在某些情况下使 zeep 使用默认命名空间而不是命名命名空间

标签 python xml soap zeep

我正在使用 Zeep 向供应商提供的 SOAP 1.1 API 发送请求,该 API 是基于 WCF 构建的,但似乎有一些特定的特性。

Zeep 目前正在生成这样的 XML

  <soap-env:Body>
    <ns0:GetDataServers xmlns:ns0="AIR.Services.DataSourceManagementService.Api">
      <ns0:request>
        <ns1:BusinessUnitSid xmlns:ns1="AIR.Services.Common.Api">1</ns1:BusinessUnitSid>
        <ns2:LicenseUid xmlns:ns2="AIR.Services.Common.Api">00000000-0000-0000-0000-000000000000</ns2:LicenseUid>
        <ns3:RequestUid xmlns:ns3="AIR.Services.Common.Api">00000000-0000-0000-0000-000000000000</ns3:RequestUid>
        <ns4:SqlInstanceSid xmlns:ns4="AIR.Services.Common.Api">1</ns4:SqlInstanceSid>
      </ns0:request>
    </ns0:GetDataServers>
  </soap-env:Body>

但是,这被拒绝并出现错误 第 1 行位置 74 中出现错误。期望来自命名空间“AIR.Services.DataSourceManagement.Api”的元素“GetDataServersRequest”..遇到名称为“GetDataServersRequest”的“元素”,命名空间“'.

但是如果我将 ns0 设置为默认命名空间,它就可以工作

<soap-env:Body>
    <GetDataServers xmlns="AIR.Services.DataSourceManagementService.Api">
      <request>
        <ns1:BusinessUnitSid xmlns:ns1="AIR.Services.Common.Api">1</ns1:BusinessUnitSid>
        <ns2:LicenseUid xmlns:ns2="AIR.Services.Common.Api">00000000-0000-0000-0000-000000000000</ns2:LicenseUid>
        <ns3:RequestUid xmlns:ns3="AIR.Services.Common.Api">00000000-0000-0000-0000-000000000000</ns3:RequestUid>
        <ns4:SqlInstanceSid xmlns:ns4="AIR.Services.Common.Api">1</ns4:SqlInstanceSid>
      </request>
    </GetDataServers>
  </soap-env:Body>

有没有办法让 Zeep 在这个位置使用普通的 xmlns 默认命名空间?

最佳答案

您可以通过以下方式实现此目的

client.set_ns_prefix(None, namespace_name)

关于python - 在某些情况下使 zeep 使用默认命名空间而不是命名命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022962/

相关文章:

c# - 在没有对我的最终输出进行 HTML 编码的情况下使用 XSL 进行转换的属性方法是什么?

xml - http ://xml. apache.org/xml-soap 去哪儿了?

ios - SOAP 网络服务 header 错误

python - 在Python中添加父节点编号关系的表格XML文件

python - Django 静态文件版本

xml - 从BLOB字段中提取信息

c# - 替换 XElement 中的元素会中断 foreach 循环

java - 如何使用 citrus 框架将 Soap 响应消息存储在字符串中

python - 使新元组/字符串扩展 1 的便捷方法

python - python 中 dict 的 IndexError,