如何解决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 举报,一经查实,本站将立刻删除。