我有一个简单的Python脚本,它使用Suds从SOAP Web服务中提取数据.它在一台机器上完美运行,但当我将它移动到另一台具有较旧版本的Python(2.4.3)时,我得到以下堆栈跟踪:
>>> client = suds.client.Client(url, username='xxx', password='xxx', location=service_location, cache=None)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/home/etlsmart/lib/python2.4/site-packages/suds/client.py", line 112, in __init__
self.wsdl = reader.open(url)
File "build/bdist.linux-i686/egg/suds/reader.py", line 152, in open
File "build/bdist.linux-i686/egg/suds/wsdl.py", line 136, in __init__
File "build/bdist.linux-i686/egg/suds/reader.py", line 79, in open
File "build/bdist.linux-i686/egg/suds/reader.py", line 101, in download
File "/home/etlsmart/lib/python2.4/site-packages/suds/sax/parser.py", line 136, in parse
sax.parse(source)
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 220, in feed
self._err_handler.fatalError(exc)
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/handler.py", line 38, in fatalError
raise exception
xml.sax._exceptions.SAXParseException: <unknown>:18:2: mismatched tag
Run Code Online (Sandbox Code Playgroud)
我查看了涉及缓存的各种相关错误,但这似乎不是问题.我已禁用缓存,而/ tmp/suds在任何情况下都只包含一个版本文件.
这可能与Python版本有关,还是有其他明显的东西我应该尝试?
我有同样的问题.服务器已回答HTML而不是SOAP.
端点使用错误的HTML消息进行响应,而不是SOAP XML.出于某种原因,SUDS说"我无法解析这个.哼!" 而不是"我无法解析这个答案:<answer here>",即使使用DEBUG日志级别也是如此.
发现使用调试器进入suds.reader:
/usr/lib/python2.6/site-packages/suds/reader.py in download(self, url)
100 content = ctx.document
101 sax = Parser()
--> 102 return sax.parse(string=content)
103
104 def cache(self):
Run Code Online (Sandbox Code Playgroud)
查看content并查看它是否是SOAP XML.
祝好运.
| 归档时间: |
|
| 查看次数: |
6084 次 |
| 最近记录: |