0
koreav
23.07.12
✎
11:38
|
Обращаюсь к сторонней web-службе:
Определение = Новый WSОпределения("http://appl.dpd.ru:8080/services/geography?wsdl");
Прокси = Новый WSПрокси(Определение, "http://dpd.ru/ws/geography/2012-04-17", "DPDGeographyService", "DPDGeographyPort");
Фабрика = Прокси.ФабрикаXDTO;
Параметры = Фабрика.Создать(Фабрика.Тип("http://dpd.ru/ws/geography/2012-04-17","getTerminalsSelfDelivery"));
Параметры.auth = Фабрика.Создать(Фабрика.Тип("http://dpd.ru/ws/geography/2012-04-17","auth"));
Параметры.auth.clientKey = getClientKey();
Параметры.auth.clientNumber = getClientNumber();
Перехватываю soap сообщение сгенеренное 1С:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body> <getTerminalsSelfDelivery xmlns="http://dpd.ru/ws/geography/2012-04-17"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<auth>
<clientNumber>xxx</clientNumber>
<clientKey>xxx</clientKey>
</auth>
</getTerminalsSelfDelivery></soap:Body>
</soap:Envelope>
Результат:
Ошибка SOAP сервера: com.sun.istack.XMLStreamException2: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'auth'. One of '{auth}' is expected.
Если добавляю руками (руками в soapui) пространство имен
т.е. вместо
<getTerminalsSelfDelivery xmlns="http://dpd.ru/ws/geography/2012-04-17"
пишу
<nsogogo:getTerminalsSelfDelivery xmlns:nsogogo="http://dpd.ru/ws/geography/2012-04-17"
то все ок.
Как сделать что бы 1С-ка добавляла явно ns?
|
|