Форум сайта python.su
0
Приветствую всех.
Есть задача написать простенький скрипт для выполнения Soap запросов. Для решения данной задачи использую SUDS/
Проблема в том что один из передаваемых параметров содержит кавычки которые не хотят передаваться. В питоне я пару дней всего. Поэтому надеюсь на вашу помощь.
Пример кода.
from suds.client import Client from suds.sax.element import Element from suds.plugin import MessagePlugin logging.basicConfig(level=logging.INFO) logging.getLogger('suds.client').setLevel(logging.DEBUG) url_wsdl = 'http://10.45.0.79:8072/Broker.svc?singleWsdl' class FixEnvelope(MessagePlugin): def marshalled(self, context): #modify this line to reliably find the "recordReferences" element context.envelope[1].setPrefix('ns0') client=Client(url_wsdl, plugins=[FixEnvelope()]) print client tel = 890XXXX0099 var = '{phone : \'%s \',name: \'test\'}'% (tel) params = client.factory.create('ExecProcV2') params.contextId = '5cc62707-7da7-431b-aa96-1674740b9076' params.classCode = 'TP_CALLBACK' params.procCode = 'callbackset' params.parameters = "{phone : '%s,name:' 'test'}"% (tel) params.varParams = '{}' print params response = client.service.ExecProcV2(params) print response]
DEBUG:suds.client:sending to (http://10.45.0.79:8072/Broker.svc) message: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:ns0="http://Broker/Service" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <ns1:Body> <ns0:ExecProcV2> <ns0:contextId> <ns0:contextId>5cc62707-7da7-431b-aa96-1674740b9076</ns0:contextId> <ns0:classCode>TP_CALLBACK</ns0:classCode> <ns0:procCode>callbackset</ns0:procCode> <ns0:parameters>{phone : '896XXXXXX99,name:' 'test'}</ns0:parameters> <ns0:varParams>{}</ns0:varParams> </ns0:contextId> </ns0:ExecProcV2> </ns1:Body> </SOAP-ENV:Envelope> DEBUG:suds.client:headers = {'SOAPAction': '"http://MBroker/Service/IBrokerService/ExecProcV2"', 'Content-Type': 'text/xml; charset=utf-8'} ERROR:suds.client:<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:ns0="http://MBroker/Service" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <ns0:Body> <ns0:ExecProcV2> <ns0:contextId> <ns0:contextId>5cc62707-7da7-431b-aa96-1674740b9076</ns0:contextId> <ns0:classCode>TP_CALLBACK</ns0:classCode> <ns0:procCode>callbackset</ns0:procCode> <ns0:parameters>{phone : '896XXXXXX99,name:' 'test'}</ns0:parameters> <ns0:varParams>{}</ns0:varParams> </ns0:contextId> </ns0:ExecProcV2> </ns0:Body> </SOAP-ENV:Envelope>
Отредактировано kirigal (Окт. 29, 2014 07:43:22)
Офлайн
34
Решение проблемы неоднозначности разметки
Predefined entities in XML
Апостроф это спец символ и XML парсер должен автоматически его конвертировать. Т.е. вам не надо ничего дополнительно делать. Если что-то не работает, то скорей всего не из-за этого.
Офлайн