微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Zeep 的 SOAP 请求:如何指定选择元素无名称属性

如何解决Python Zeep 的 SOAP 请求:如何指定选择元素无名称属性

我目前正在尝试从使用 ws-trust 进行令牌请求和响应的服务器获取令牌。我面临的挑战如下: 服务正在等待 IssueRST 消息,

<wsdl:message name="IssueRequestMsg">
    <wsdl:part name="IssueRequest" element="wst:RequestSecurityToken" />
</wsdl:message>

它需要一个 RequestSecurityToken (RST) 类型:

RequestSecurityTokenType' >
    <xs:sequence>
      <!-- <xs:any namespace='##any' processContents='lax' minOccurs='0' maxOccurs='unbounded' /> -->
      <xs:element ref='wst:TokenType' />
      <xs:element ref='wst:RequestType' />
      <xs:choice>
        <!-- ISTS-IssueRequest -->
        <xs:sequence>
          <xs:element ref='wsp:AppliesTo' />
          <xs:element ref='wst:Claims' minOccurs='0' />
          <xs:element ref='wst:Lifetime' minOccurs='0' />
          <xs:element ref='wst:AuthenticationType' minOccurs='0' />
        </xs:sequence>
        <!-- ISTS-CancelRequest -->
        <xs:sequence>
          <xs:element ref='wst:CancelTarget' />
        </xs:sequence>
        <!-- ISTS-ValidateRequest -->
        <xs:sequence>
          <xs:element ref='wst:ValidateTarget' />
        </xs:sequence>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name='Context' type='xs:anyURI' use='optional' />
    <!-- <xs:anyAttribute namespace='##other' processContents='lax' /> -->
  </xs:complexType>

(xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512/",xmlns:wsp="http://www.w3.org/ns/ ws-policy")

我可以创建单个元素(例如 TokenType 的实例等),但是当我尝试创建 RequestSecurityTokenType 的实例时,我最终(除了一些语法错误)出现错误

TypeError: Choice 元素仅适用于关键字参数

我尝试了不同的方法来实例化 RST,但没有成功:

  • 将元素作为带有“_value_1”的字典传递以设置第一选择元素:

    RST_value = RST(TT_value,RT_value,_value_1={'AppliesTo': AT_value,'Claims': CT_value,'Lifetime': LT_value})

  • 将元素作为列表传递

  • 将元素传递给没有 _value_1 的字典

  • 不带任何东西地传递元素

    RST_value = RST(TT_value,AT_value,CT_value,LT_value)

zeep 指定 RST 以使用 RequestSecurityTokenType 的第一选择的正确方法是什么?

(我使用的是 Python 3.9.2 和 zeep 版本 4.0.0)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。