我正在使用SOAPpy进行soap wsdl服务。我正在关注这个toturail。我的代码如下
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
我尝试使用
将字符串转换为utfwsdlFile = unicode('http://track.tcs.com.pk/trackingaccount/track.asmx?WSDL, "utf-8")
但仍有同样的错误。这里缺少什么?
答案 0 :(得分:0)
我只是遇到了一些非常老的2.7代码的问题,该代码由于TLS更新而不再起作用。更新到最新版本的Python 2后,我最终遇到了这个问题。
我只能通过设置一个新的虚拟环境,然后在该虚拟环境中修改wstools软件包以使用BytesIO而不是StringIO来解决此问题。
替换每个所需的StringIO实例。例如:
# WSDLTools.py
...
from IO import BytesIO
...
return self.loadFromStream(BytesIO(data))
并不理想,但确实有效。比将所有内容迁移到Python 3更容易...