2013-11-07 3 views
2

Я пытаюсь вызвать метод с использованием SOAP-запроса с помощью SOAPpy на Python 2.7.5. Метод называется GetCursOnDate и возвращает обменные курсы. Он принимает параметр datetime.Как получить тело SOAP с помощью SOAPpy?

Я использую следующий код:

from SOAPpy import WSDL 
from SOAPpy import Types 

# you can download this and use it locally for better performance 
wsdl = "http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl" 
namespace = "http://web.cbr.ru/" 
input = Types.dateType(name = (namespace, "On_date")) 

proxy = WSDL.Proxy(wsdl, namespace = namespace) 
proxy.soapproxy.config.debug = 1 

proxy.GetCursOnDate(input) 

Проблема заключается в том, как получить тело ответа SOAP с обменными курсами

ответ

4

Если вы хотите посмотреть на него (запрос SOAPpy/тело ответа) в консоли, добавьте эти строки:

proxy.soapproxy.config.dumpSOAPOut = 1 
proxy.soapproxy.config.dumpSOAPIn = 1 

, а затем вызвать:

proxy.GetCursOnDate(input) 

обновление: Не могу заставить его работать с SOAPpy, всегда получайте пустой результат. Я думаю, что проблема заключается в том, что схема ссылается на тип, определенный в пространстве имен схемы = «http://www.w3.org/2001/XMLSchema», но не импортирует его (без разрешения врача п.п. Клиент выбрал это исключение: suds.TypeNotFound: Type not found: '(schema, http://www.w3.org/2001/XMLSchema,)'). Попробуйте его с клиентом пены:

from suds.client import Client 
from suds.xsd.doctor import ImportDoctor, Import 
import datetime 

imp = Import('http://www.w3.org/2001/XMLSchema') # the schema to import. 
imp.filter.add('http://web.cbr.ru/')    # the schema to import into. 
d = ImportDoctor(imp) 
s = Client("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl", doctor=d) 
result = s.service.GetCursOnDate(datetime.datetime.now()) 
+0

Что означают команды? все равно я бы не получил тело, оно пусто – Leo

+0

большое спасибо, человек), вы знаете, он отлично работает с пеной!) Да, я не мог найти решения, чтобы получить ответ с Soppy – Leo