开发者

SAXParseException using Python and suds 0.4?

开发者 https://www.devze.com 2023-02-14 00:28 出处:网络
I have a simple Python script that uses Suds to pull data from a SOAP web service.It works perfectly on one machine, but when I move it to another that has an older version of Python (2.4.3), I get th

I have a simple Python script that uses Suds to pull data from a SOAP web service. It works perfectly on one machine, but when I move it to another that has an older version of Python (2.4.3), I get the following stack trace:

>>> 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 pars开发者_开发知识库e
    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

I've looked at various related errors involving the cache, but that doesn't seem to be the issue. I've disabled the cache and /tmp/suds only contained a version file in any case.

Is this likely related to the Python version or is there something else obvious that I should try?


I had the same problem. The server has answering HTML instead of SOAP.

The endpoint has responding with an HTML message of error, not an SOAP XML. For some reason, SUDS says "I cannot parse this. Halp!" instead of "I cannot parse this answer: < answer here >", even with DEBUG log level.

Found that poking into suds.reader, using a debugger:

/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):

Look at contentand see if its an SOAP XML.

Good luck.

0

精彩评论

暂无评论...
验证码 换一张
取 消