SAXParseException с использованием Python и suds 0.4? - PullRequest
6 голосов
/ 01 марта 2011

У меня есть простой скрипт на Python, который использует Sud для извлечения данных из веб-службы SOAP.Он отлично работает на одной машине, но когда я перемещаю его на другую, на которой установлена ​​более старая версия 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

Я смотрел на различные связанныеошибки, связанные с кешем, но это не проблема.Я отключил кеш, и / tmp / suds в любом случае содержал только файл версии.

Вероятно, это связано с версией Python или есть что-то еще очевидное, что я должен попробовать?

1 Ответ

7 голосов
/ 19 декабря 2012

У меня была такая же проблема.Сервер использует отвечающий HTML вместо SOAP.

Конечная точка отвечает сообщением об ошибке HTML, а не SOAP XML.По какой-то причине, SUDS говорит: «Я не могу разобрать это. Хэлп!»вместо «Я не могу разобрать этот ответ: <ответ здесь>», даже с уровнем журнала 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):

Посмотрите наcontent и посмотрите, является ли это SOAP XML.

Удачи.

...