Как я могу выводить, какие SUDs генерируют / получают?

У меня есть следующий код:

from suds.client import Client import logging logging.basicConfig(level=logging.INFO) logging.getLogger('suds.client').setLevel(logging.DEBUG) logging.getLogger('suds.transport').setLevel(logging.DEBUG) logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG) logging.getLogger('suds.wsdl').setLevel(logging.DEBUG) SB_PRIVATE_ACCESS = {"PATH":"https://thisurl.com:443/services/",} client = Client(SB_PRIVATE_ACCESS['PATH']) print client 

но я получаю 500 ошибок. Я пытаюсь отправить то, что XML генерируется и получен через SUD, разработчику wsdl, но я не могу понять, как его выводить? Я смотрел в документации SUD, но не могу найти его: / Кто-нибудь знает, как выводить необработанный XML-адрес, который отправляется и принимается?

  • Нужна помощь с использованием XPath в ElementTree
  • Как добавить узел обработки команд xml-stylesheet с Python 2.6 и minidom?
  • Разбор файла с несколькими xmls в нем
  • Как получить весь контент между двумя тегами xml в Python?
  • Записи OpenERP ir.rule в security.xml
  • Объединить файлы xml с вложенными элементами без внешних библиотек
  • Как анализировать формат xsd: dateTime?
  • Как преобразовать XML в объекты?
  • 6 Solutions collect form web for “Как я могу выводить, какие SUDs генерируют / получают?”

    SUDS предоставляет некоторые удобные методы для этого:

      client.last_sent() client.last_received() 

    Они должны предоставить вам то, что вам нужно. Я использую их для регистрации ошибок. В документе API doc для класса Client должна быть дополнительная информация, которая вам нужна.

    Вы можете использовать MessagePlugin для этого (это будет работать на новой вилке Jurko, где last_sent и last_received были удалены)

     from suds.plugin import MessagePlugin class LogPlugin(MessagePlugin): def sending(self, context): print(str(context.envelope)) def received(self, context): print(str(context.reply)) client = Client("http://localhost/wsdl.wsdl", plugins=[LogPlugin()]) 

    Suds поддерживает внутреннюю регистрацию, как вы делали.

    Я устанавливаю информационные уровни, как вы:

     logging.getLogger('suds.client').setLevel(logging.DEBUG) logging.getLogger('suds.transport').setLevel(logging.DEBUG) # MUST BE THIS? logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG) logging.getLogger('suds.wsdl').setLevel(logging.DEBUG) logging.getLogger('suds.resolver').setLevel(logging.DEBUG) logging.getLogger('suds.xsd.query').setLevel(logging.DEBUG) logging.getLogger('suds.xsd.basic').setLevel(logging.DEBUG) logging.getLogger('suds.binding.marshaller').setLevel(logging.DEBUG) 

    Иногда мне также необходимо переопределить уровень ведения журнала корневого регистратора, в зависимости от того, какая структура используется при вызовах Suds (Django, Plone). Если корневой регистратор имеет более высокий порог регистрации, журналы сообщений могут никогда не появляться (не знаете, как должны идти иерархии журналов). Ниже приведен пример того, как переопределить:

     def enableDebugLog(self): """ Enable context.plone_log() output from Python scripts """ import sys, logging logger = logging.getLogger() logger.root.setLevel(logging.DEBUG) logger.root.addHandler(logging.StreamHandler(sys.stdout)) 

    Чтобы получить только сгенерированное сообщение, это также работает:

     from suds.client import Client import sys SB_PRIVATE_ACCESS = {"PATH":"https://thisurl.com:443/services/",} client = Client(SB_PRIVATE_ACCESS['PATH']) client.set_options(nosend=True) resp = ...<invoke client here>... sys.stdout.buffer.write(resp.envelope) 

    попробуйте изменить

     logging.basicConfig(level=logging.INFO) 

    в

     logging.basicConfig(filename="/tmp/suds.log", level=logging.DEBUG) 

    Если вы хотите сократить лесозаготовки с помощью jurko-suds

      logging.basicConfig(level=logging.INFO) logging.getLogger('suds.client').setLevel(logging.INFO) logging.getLogger('suds.transport').setLevel(logging.INFO) logging.getLogger('suds.xsd.schema').setLevel(logging.INFO) logging.getLogger('suds.wsdl').setLevel(logging.INFO) logging.getLogger('suds.resolver').setLevel(logging.INFO) logging.getLogger('suds.xsd.query').setLevel(logging.INFO) logging.getLogger('suds.xsd.sxbasic').setLevel(logging.INFO) logging.getLogger('suds.xsd.sxbase').setLevel(logging.INFO) logging.getLogger('suds.metrics').setLevel(logging.INFO) logging.getLogger('suds.binding.marshaller').setLevel(logging.INFO) 
    Python - лучший язык программирования в мире.