parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

SOAP на парсере

virusav 22.04.2015 12:08 / 22.04.2015 13:10

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

Разбираю WSDL, формирую структуру в виде хеша.
Далее формирую XML, отправляю серверу 1С и получаю ответ.

Первые вопросы:
1. Как на основании названия метода (операции) правильно определить NS?
В одном WSDL идет указание soapAction, а в другом - нет.
Я иду таким путем: перебираю porttype и проверяю, есть ли в них нужная операция, после чего беру NS (tns:Function) и через NS в definitions получаю nsX.

2. Встречал ли кто-нибудь тестовые сервера, где можно "обкатать" работу с SOAP?
Нужно учесть различные варианты с префиксами, NS и т.д.
Для локального проекта можно сделать упрощенную модель, но хочется сделать универсально.

3. Как через xdoc загрузить xml-ответ?
	$sHTML[<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
		<soap:Header/>
		<soap:Body>
			<m:FunctionResponse xmlns:m="www">
				<m:return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
					<abc xmlns="my_ns">temp</abc>
				</m:return>
			</m:FunctionResponse>
		</soap:Body>
	</soap:Envelope>]
	$sHTML[^sHTML.replace[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">;<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:my_ns="http://schemas.xmlsoap.org/soap/envelope/"]]
	$xdData[^xdoc::create{$sHTML}]
Возникает ошибка:
Entity: line 2: parser error : error parsing attribute name
		<soap:Header/>