Я нахожусь в процессе вызова веб-сервиса documentum, для которого я начинаю с простого кода:
from suds.client import Client #@UnresolvedImport from suds.transport.https import HttpAuthenticated import urllib2 t=HttpAuthenticated(username='x', password='x') t.handler = urllib2.HTTPBasicAuthHandler(t.pm) t.urlopener = urllib2.build_opener(t.handler) url = 'http://hudt17:8888/services/core/ObjectService?wsdl' client = Client(url,transport=t) print client
Он отлично работает, если url='http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl'.Но мне возвращают эту ошибку, если это не так:
url='http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl'
https://docs.google.com/document/pub?id=1Qk8_qji385B9fZB-z4eMbPc1fv1AXVKEtbxr7Xx6AvQ
Что здесь происходит?
Для этой проблемы есть патч:
https://fedorahosted.org/suds/attachment/ticket/239/recurselevel-schema.py.patch
Нажмите на ссылку «Оригинальный формат» внизу страницы. Затем вы можете применить патч, используя:
patch schema.py < recurselevel-schema.py.patch
Затем установите из каталога верхнего уровня источника suds, используя:
easy_install .
Это считается блокирующей ошибкой в системе отслеживания проблем Suds: https://fedorahosted.org/suds/ticket/239
К сожалению, эта проблема была открыта более 3 лет, начиная с 2012 года.
Вы ссылаетесь на схему XSD, которая ссылается на себя.
Или на другую схему, которая ссылается на первую.
В любом случае одна или несколько схем имеют круглуюзависимость.
Я столкнулся с той же проблемой, потребляя огромный wsdl с несколькими включениями и циклическими вызовами.Версия suds-jurko 0.6 не поддерживает это, но текущие разработчики, сокращающие v0.7, похоже, решают эту проблему.
Загрузите последний zip-архив и извлеките: (Найдите тег наконечника или последний тег или ветвь) https://bitbucket.org/jurko/suds/downloads
Установка:
$ sudo easy_install .
Подтвердить:
$ pip freeze
Должно отобразиться:
suds-jurko == 0.7.dev0