Имя: Пароль:
1C
1C 7.7
v7: SOAP запрос в 7.7 - возвращает всю WSDL-схему
0 BruS
 
05.06.18
18:18
Доброго всем.
Возникла необходимость в получении данных по SOAP API из 7.7 (в 8-ке все норм через WSОпределение, но нужно из 7.7)
Что выяснил:
1. Сервис на Win7 и выше не работает с СоздатьОбъект("MSSOAP.SoapClient30")
Пакет SoapClient найти и установить можно, но при обращении к API ошибка: Client:Unspecified client error. HRESULT=0x80070057: Параметр задан неверно.
2. Установил SoapUI, и попытался обратиться к WSDL-сервису через POST запрос.
Не решена проблема: в результате запроса возвращается полное описание сервиса (WSDL-схема) вместо нужного мне результата (в SoapUI все норм).

Вот что делал:
Код на 7.7 (делал по разному, пока так)

xmlParser = СоздатьОбъект("Msxml2.DOMDocument");
xmlParser.load("d:\request.xml");

URL="https://client.grandline.ru/soap/wsdl.php";;

MSXML2 = СоздатьОбъект("MSXML2.XMLHTTP");
MSXML2.open("POST", URL, 0, "_________", "_______________");

MSXML2.setRequestHeader("Accept-Encoding", "gzip,deflate");
MSXML2.setRequestHeader("Content-Type", "text/xml;charset=UTF-8");
MSXML2.setRequestHeader("SOAPAction", "https://client.grandline.ru#Api:getAgreements";);
MSXML2.setRequestHeader("Host", "client.grandline.ru");
MSXML2.setRequestHeader("Connection", "Keep-Alive");
MSXML2.setRequestHeader("User-Agent", "Apache-HttpClient/4.1.1 (java 1.5)");
MSXML2.send(xmlParser.xml);

Если MSXML2.Status <> 200 Тогда
Сообщить("Ответ сервера не ""Ок""!");
Возврат;
КонецЕсли;

xmlParser.loadXML(MSXML2.responseXML.xml);
xmlParser.Save("d:\gr.xml");

Файл request.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:cli="https://client.grandline.ru">;
<soapenv:Header/>
<soapenv:Body>
<cli:getAgreements>
<cli:api_key>___________________________</cli:api_key>
</cli:getAgreements>
</soapenv:Body>
</soapenv:Envelope>

Может кто-нить сталкивался, в чем затык - не могу пока понять.