Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема SOAP API из 1С7.7 - возвращает все WSDL-схему (число прочтений - 2973 )
BruS
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 06. Июня 2018
SOAP API из 1С7.7 - возвращает все WSDL-схему
06. Июня 2018 :: 03:58
Печать  
Доброго всем.
Возникла необходимость в получении данных по SOAP API из 7.7. Проблема - в ответе возвращается вся WSDL-схема, вместо нужных данных.
Что выяснил:
1. Сервис на Win7 и выше не работает с СоздатьОбъект("MSSOAP.SoapClient30")
Пакет SDK SoapClient  найти и установить можно, но при обращении к API ошибка: Client:Unspecified client error. HRESULT=0x80070057: Параметр задан неверно.
2. Установил SoapUI, и попытался обратиться к WSDL-сервису через POST запрос.
Не решена проблема: в результате запроса возвращается полное описание сервиса (WSDL-схема) вместо нужного мне результата (в SoapUI все норм).
  
Наверх
 
IP записан
 
BruS
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 06. Июня 2018
Re: SOAP API из 1С7.7 - возвращает все WSDL-схему
Ответ #1 - 06. Июня 2018 :: 04:01
Печать  
сейчас код на 7.7 добавлю, а то форум не пропускает ссылки (говорит 2 простых сообщения нужно вставить)
  
Наверх
 
IP записан
 
BruS
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 06. Июня 2018
Re: SOAP API из 1С7.7 - возвращает все WSDL-схему
Ответ #2 - 06. Июня 2018 :: 04:01
Печать  

Вот что делал:
Код на 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>

Может кто-нить сталкивался, в чем затык - не могу пока понять.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: SOAP API из 1С7.7 - возвращает все WSDL-схему
Ответ #3 - 06. Июня 2018 :: 11:51
Печать  
Ты wsdl запрашиваешь, оно его и возвращает. Улыбка
Чтобы вызвать метод сервиса, нужно отправить запрос по адресу, указанному в атрибуте location - https://client.grandline.ru/api/server/soap
И если ты присмотришься - SoapUI использует именно эту точку входа.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
BruS
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 06. Июня 2018
Re: SOAP API из 1С7.7 - возвращает все WSDL-схему
Ответ #4 - 06. Июня 2018 :: 12:17
Печать  
berezdetsky писал(а) 06. Июня 2018 :: 11:51:
Ты wsdl запрашиваешь, оно его и возвращает. Улыбка
Чтобы вызвать метод сервиса, нужно отправить запрос по адресу, указанному в атрибуте location - https://client.grandline.ru/api/server/soap
И если ты присмотришься - SoapUI использует именно эту точку входа.


Спасибо, что откликнулись, попробовал, возвращается пустой ответ, хотя SoapUI возвращает правильный ответ. Что еще может быть не так?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: SOAP API из 1С7.7 - возвращает все WSDL-схему
Ответ #5 - 06. Июня 2018 :: 14:27
Печать  
Сервис странное возвращает. Вот так работает:

xmlParser.loadXML(MSXML2.responseText);
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
BruS
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 06. Июня 2018
Re: SOAP API из 1С7.7 - возвращает все WSDL-схему
Ответ #6 - 07. Июня 2018 :: 02:18
Печать  
berezdetsky писал(а) 06. Июня 2018 :: 14:27:
Сервис странное возвращает. Вот так работает:

xmlParser.loadXML(MSXML2.responseText);


Да так и есть, тоже вчера получил данные через MSXML2.responseText (вместо MSXML2.responseXML)

Всем большое спасибо, тема закрыта.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать