类型错误:初始值必须是Unicode或None,而不是字符串。

6

我正在使用SOAPpy处理soap wsdl服务。 我正在按照此教程的步骤进行操作。我的代码如下:

from SOAPpy import WSDL
wsdlfile = 'http://track.tcs.com.pk/trackingaccount/track.asmx?WSDL'
server = WSDL.Proxy(wsdlfile)

我在我的代码的最后一行遇到了这个错误。
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/adil/Code/mezino/RoyalTag/royalenv/local/lib/python2.7/site-packages/SOAPpy/WSDL.py", line 85, in __init__
self.wsdl = reader.loadFromString(str(wsdlsource))
File "/home/adil/Code/mezino/RoyalTag/royalenv/local/lib/python2.7/site-packages/wstools/WSDLTools.py", line 52, in loadFromString
return self.loadFromStream(StringIO(data))
TypeError: initial_value must be unicode or None, not str

我尝试使用以下方法将字符串转换为UTF格式:

wsdlFile = unicode('http://track.tcs.com.pk/trackingaccount/track.asmx?WSDL, "utf-8")

但仍然出现相同的错误。这里缺少什么?

对我来说可以工作;猜测是在问题提出时该URL未解析。 - snakecharmerb
1个回答

1
我刚遇到了一个问题,涉及到一些非常老旧的2.7代码,由于TLS更新不再起作用。在更新到最新版本的Python 2之后,我最终遇到了这个问题。
我只能通过设置一个新的虚拟环境,然后修改该虚拟环境中的wstools包,使用BytesIO而不是StringIO来解决这个问题。
替换每个必需的StringIO实例。例如:
# WSDLTools.py
...
from IO import BytesIO
...
return self.loadFromStream(BytesIO(data))

虽然不是最理想的,但它确实可行。比起将所有内容迁移到Python 3,这更容易...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接