我需要用这样的消息调用SOAP服务:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sub="https://secure.xpslogic.com/service/wijnen/sub">
<soapenv:Header>
<sub:auth>
<token>?</token>
<!--Optional:-->
<user_id>?</user_id>
<!--Optional:-->
<user_token>?</user_token>
</sub:auth>
</soapenv:Header>
<soapenv:Body>
<sub:customer_logos_pull>
<!--Optional:-->
<language>?</language>
<!--Optional:-->
<limit>?</limit>
<!--Optional:-->
<options_utc>?</options_utc>
</sub:customer_logos_pull>
</soapenv:Body>
</soapenv:Envelope>
我有一些php示例代码,它将头设置如下(效果非常好):
auth=array(); $auth['token']='xxx'; 如果($auth){ //添加身份验证头 $this->;clients[$module]->;\uu setSoapHeaders( 新建SoapHeader( $命名空间, 'auth', $认证 ) ); }在
我现在用Python suds lib构造(空)主体和头,如下所示:
^{pr2}$但这给了我一条not well-formed (invalid token)
消息。打开日志记录时,我发现以下消息:
DEBUG:suds.mx.core:processing:
(Content){
tag = "auth"
value =
(auth){
token = "xxx"
user_id = None
user_token = None
}
type = <Element:0x10ff8c950 name="auth">
<Complex:0x10ff8cbd0>
<Sequence:0x10ff8cc50>
<Element:0x10ff8cd10 name="token" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />
<Element:0x10ff8cd50 name="user_id" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />
<Element:0x10ff8cd90 name="user_token" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />
</Sequence>
</Complex>
</Element>
}
我觉得它很好,但是它也给出了一个not well-formed (invalid token)
。看到关于如何传入soap头的suds docs has 3 examples,我也尝试了另外两个:
>>> token = client.factory.create('auth.token')
>>> token.set(TOKEN)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: token instance has no attribute 'set'
以及
>>> client.set_options(soapheaders={'auth': {'token': 'xxx'}})
>>> customerLogosPull = client.factory.create('customer_logos_pull')
>>> result = client.service.customer_logos_pull(customerLogosPull)
它在日志中给出了这个内容,并且仍然是一个not well-formed (invalid token)
:
(Content){
tag = "auth"
value =
{
token = "xxx"
}
type = <Element:0x106049290 name="auth">
<Complex:0x106049510>
<Sequence:0x106049590>
<Element:0x106049650 name="token" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />
<Element:0x106049690 name="user_id" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />
<Element:0x1060496d0 name="user_token" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />
</Sequence>
</Complex>
</Element>
}
有人知道如何使用Python在头中正确地设置令牌吗?欢迎所有提示!在
我让我的肥皂头工作如下:
对应于下面在soap请求xml中显示的soap头
^{pr2}$我们可以看到使用
print client.last_sent()
发送了什么请求我试着
但是我在下面的行中遇到了一个错误
^{pr2}$这里的错误是:
相关问题 更多 >
编程相关推荐