suds的断言错误

时间:2017-01-30 12:59:50

标签: python soap suds

我正试图通过官方pip存储库中的jurko(Python 3.5.2)使用suds发送一些SOAP。

这是我的代码。不幸的是,我应该隐藏我的登录名和密码,因此您不能将其复制并粘贴到终端。

my_login = 'login'
my_password = 'password'
barcode = '10100082848426'
message = \
                """<?xml version="1.0" encoding="UTF-8"?>
                                <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:oper="http://russianpost.org/operationhistory" xmlns:data="http://russianpost.org/operationhistory/data" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
                                <soap:Header/>
                                <soap:Body>
                                   <oper:getOperationHistory>
                                      <data:OperationHistoryRequest>
                                         <data:Barcode>""" + barcode+ """</data:Barcode>
                                         <data:MessageType>0</data:MessageType>
                                         <data:Language>RUS</data:Language>
                                      </data:OperationHistoryRequest>
                                      <data:AuthorizationHeader soapenv:mustUnderstand="1">
                                         <data:login>"""+ my_login +"""</data:login>
                                         <data:password>""" + my_password + """</data:password>
                                      </data:AuthorizationHeader>
                                   </oper:getOperationHistory>
                                </soap:Body>
                             </soap:Envelope>"""
result = client.service.getOperationHistory(__inject={'msg':message})

在这里我收到一个错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python3.5/site-packages/suds/client.py", line 521, in __call__
    return client.invoke(args, kwargs)
  File "/usr/local/lib/python3.5/site-packages/suds/client.py", line 760, in invoke
    assert msg.__class__ is suds.byte_str_class
AssertionError

从回溯中,我理解错误是什么,但我无法弄清楚是什么导致它。有什么建议吗?

注意:此请求是俄罗斯邮政API请求,所有需要here

2 个答案:

答案 0 :(得分:0)

我在一段时间后再次遇到此问题,这似乎是编码问题。我将我的CentOS上的语言环境设置为&#34; ru_RU.utf-8&#34;一切都开始有效了。

答案 1 :(得分:0)

这应解决问题:

from suds import byte_str
message = byte_str(message)