【发布时间】:2020-07-15 22:05:03
【问题描述】:
使用 zeep 3.4.0
wsdl 在 header 中寻找以下信息
<soapenv:Header>\n
<vv:sessionHeader soapenv:mustUnderstand=\"1\">\n
<vv:sessionToken>\n
<vv:Token1 xmlns:vv=\"http://www.z.com/zTypes.xsd\">{{Token1Token}}
</vv:Token1>\n
<vv:Token2 xmlns:vv=\"http://www.z.com/zTypes.xsd\">{{Token2Token}}
</vv:Token2>\n
</vv:sessionToken>\n
</vv:sessionHeader>\n
我将参数传递给 _soapheaders 如下
headerQ = xsd.Element('Header',xsd.ComplexType ([
xsd.Element('sessionHeader',xsd.ComplexType ([
xsd.Element('sessionToken', xsd.ComplexType ([
xsd.Element('Token1',xsd.String()),
xsd.Element('Token2',xsd.String())
]))
]))
]))
header_value1 = headerQ({'Token1':Token1T, 'Token2':Token2T} )
client.set_default_soapheaders(header_value1)
header_value1 看起来像这样
{
'sessionHeader': {
'Token1': 'abcdef=',
'Token2': 'ghijkl='
}
}
我收到以下错误:
line 365, in _serialize_header
raise ValueError("Invalid value given to _soapheaders")
_serialize_header 期望 header_value1 是列表或字典
isinstance(header_value1,dict) 返回 False
问题:
- 将参数传递给 _soapheaders 的正确方法是什么
- 为什么 sessionToken 没有反映在 header 中
【问题讨论】: