Всем привет!
Подскажите пожалуйста, как правильно написать процедуру отправки http-запроса.
Мой текст такой:
AccountUrl = "http://econika-dev.ispringonline.ru";
email = "...";
password = "...";
Хост = "api.ispringonline.ru";
SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
Соединение = Новый HTTPСоединение(Хост, , , , ,10,SSL);
СтрокаXML = "
|<?xml version=""1.0"" encoding=""utf-8""?>
|<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""
| xmlns=""http://ispringlearn.com/go/services/api/soap"">
| <SOAP-ENV:Body>
| <getOrganizationsRequest>
| <credentials>
| <accountUrl>"+AccountUrl+"</accountUrl>
| <email>"+email+"</email>
| <password>"+password+"</password>
| </credentials>
| </getOrganizationsRequest>
| </SOAP-ENV:Body>
|</SOAP-ENV:Envelope>";
Попытка
HTTPЗапрос = Новый HTTPЗапрос();
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаXML);
HTTPОтвет = Соединение.ВызватьHTTPМетод("getOrganizations", HTTPЗапрос);
Если HTTPОтвет.КодСостояния <> 200 Тогда
Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
КонецЕсли;
Исключение
КонецПопытки;
На всякий случай, вот описание интеграцииhttps://www.ispring.ru/docs/pages/viewpage.action?pageId=4817403
Всем заранее спасибо!
Подскажите пожалуйста, как правильно написать процедуру отправки http-запроса.
Мой текст такой:
AccountUrl = "http://econika-dev.ispringonline.ru";
email = "...";
password = "...";
Хост = "api.ispringonline.ru";
SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
Соединение = Новый HTTPСоединение(Хост, , , , ,10,SSL);
СтрокаXML = "
|<?xml version=""1.0"" encoding=""utf-8""?>
|<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""
| xmlns=""http://ispringlearn.com/go/services/api/soap"">
| <SOAP-ENV:Body>
| <getOrganizationsRequest>
| <credentials>
| <accountUrl>"+AccountUrl+"</accountUrl>
| <email>"+email+"</email>
| <password>"+password+"</password>
| </credentials>
| </getOrganizationsRequest>
| </SOAP-ENV:Body>
|</SOAP-ENV:Envelope>";
Попытка
HTTPЗапрос = Новый HTTPЗапрос();
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаXML);
HTTPОтвет = Соединение.ВызватьHTTPМетод("getOrganizations", HTTPЗапрос);
Если HTTPОтвет.КодСостояния <> 200 Тогда
Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
КонецЕсли;
Исключение
КонецПопытки;
На всякий случай, вот описание интеграции
Всем заранее спасибо!
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Еще. Отсюда качаем WSDL-файл, импортируем WS-ссылку и поехали https://www.ispring.ru/docs/display/online/SOAP+API
Именно с SOAP работать проще если понимать что в 1С это называется web-сервис.
Код получается простым и понятным.
В вашем случае скорее всего надо будет заменить
ИмяВызываемойФункции_WSDL = getOrganizationsRequest
ИмяСхемы_WSDL =http://ispringlearn.com/go/services/api/soap
Остальное поискать в WSDL-файле. Обычно ИмяСервиса_WSDL оканчивается на "Service", а ИмяПорта_WSDL на "Port".
Параметры авторизации настроить у объекта "Прокси".
Код получается простым и понятным.
Определения = Новый WSОпределения(ФайлИлиURL_WSDL);
Прокси = Новый WSПрокси(Определения, "ИмяСхемы_WSDL", "ИмяСервиса_WSDL", "ИмяПорта_WSDL");
Результат = Прокси.ИмяВызываемойФункции_WSDL(Параметр_1, ..... Параметр_N);
В вашем случае скорее всего надо будет заменить
ИмяВызываемойФункции_WSDL = getOrganizationsRequest
ИмяСхемы_WSDL =
Остальное поискать в WSDL-файле. Обычно ИмяСервиса_WSDL оканчивается на "Service", а ИмяПорта_WSDL на "Port".
Параметры авторизации настроить у объекта "Прокси".
Сделала вот так:
В результате получаю ошибку авторизации:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {http://ispringlearn.com/go/services/api/soap }:iSpringOnlineService:addOrganization()
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Authorization failed
Код ошибки: client
//Добавление организации
AccountUrl = "http://econika-dev.ispringonline.ru";
email = "...";
password = "...";
Пакет = "http://ispringlearn.com/go/services/api/soap";
ВебСервис = WSСсылки.WSИнтеграцияiSpring.СоздатьWSПрокси(Пакет, "iSpringOnlineService", "iSpringOnlineSoap");
ВебСервис.Пароль = password;
ВебСервис.Пользователь = email;
ТипПараметраCredentials = ВебСервис.ФабрикаXDTO.Тип(Пакет,"Credentials");
Credentials = ВебСервис.ФабрикаXDTO.Создать(ТипПараметраCredentials);
Credentials.accountUrl = ВебСервис.ФабрикаXDTO.Создать(ВебСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), AccountUrl);
Credentials.email = ВебСервис.ФабрикаXDTO.Создать(ВебСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), email);
Credentials.password = ВебСервис.ФабрикаXDTO.Создать(ВебСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), password);
ТипAddOrganizationRequest = ВебСервис.ФабрикаXDTO.Тип(Пакет,"AddOrganizationRequest");
AddOrganizationRequest = ВебСервис.ФабрикаXDTO.Создать(ТипAddOrganizationRequest);
AddOrganizationRequest.name = ВебСервис.ФабрикаXDTO.Создать(ВебСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Эконика");
AddOrganizationRequest.Credentials = Credentials;
AddOrganizationRequest.description = ВебСервис.ФабрикаXDTO.Создать(ВебСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Добавлена программно");
Результат = ВебСервис.addOrganization(AddOrganizationRequest);
ПоказатьВ результате получаю ошибку авторизации:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Authorization failed
Код ошибки: client
(16)
Зачем некоторые сложности?
Авторизация у вас реализована параметром функции, и вы пошли правильным путем при этом к прокси не нужно никаких паролей.
Сделала вот так:
Зачем некоторые сложности?
Авторизация у вас реализована параметром функции, и вы пошли правильным путем при этом к прокси не нужно никаких паролей.
AccountUrl = "http://econika-dev.ispringonline.ru";
email = "...";
password = "...";
Определения = Новый WSОпределения("https://api.ispringonline.com/soap/1.2/api?wsdl");
ВебСервис = Новый WSПрокси(Определения, "http://ispringlearn.com/go/services/api/soap", "iSpringOnlineService", "iSpringOnlineSoap");
ТипПараметраCredentials = ВебСервис.ФабрикаXDTO.Тип("http://ispringlearn.com/go/services/api/soap","Credentials");
Credentials = ВебСервис.ФабрикаXDTO.Создать(ТипПараметраCredentials);
Credentials.accountUrl = AccountUrl;
Credentials.email = email;
Credentials.password = password;
Результат = ВебСервис .AddOrganizationRequest(Credentials, "Эконика", "Добавлена программно");
Показать
(20) Ага, хитрый сервис, хочет получить только один параметр. Добавляем еще немного кода.
AccountUrl = "http://econika-dev.ispringonline.ru";
email = "...";
password = "...";
Определения = Новый WSОпределения("https://api.ispringonline.com/soap/1.2/api?wsdl");
ВебСервис = Новый WSПрокси(Определения, "http://ispringlearn.com/go/services/api/soap", "iSpringOnlineService", "iSpringOnlineSoap");
ТипПараметраCredentials = ВебСервис.ФабрикаXDTO.Тип("http://ispringlearn.com/go/services/api/soap", "Credentials");
Credentials = ВебСервис.ФабрикаXDTO.Создать(ТипПараметраCredentials);
Credentials.accountUrl = AccountUrl;
Credentials.email = email;
Credentials.password = password;
ТипПараметраЗапросОрганизации = ВебСервис.ФабрикаXDTO.Тип("http://ispringlearn.com/go/services/api/soap", "AddOrganizationRequest");
AddOrganizationRequest = ВебСервис.ФабрикаXDTO.Создать(ТипПараметраЗапросОрганизации);
AddOrganizationRequest.credentials = Credentials;
AddOrganizationRequest.name = "Эконика";
AddOrganizationRequest.description = "Добавлена программно";
Результат = ВебСервис.addOrganization(AddOrganizationRequest);
Показать
Думаю, что нужно вот так:
Но в таком виде снова получаю ошибку аутентификации:
Ошибка при вызове метода контекста (addOrganization)
Результат = ВебСервис.addOrganization(AddOrganizationRequest);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {http://ispringlearn.com/go/services/api/soap }:iSpringOnlineService:addOrganization()
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Authorization failed
Код ошибки: client
AccountUrl = "http://econika-dev.ispringonline.ru";
email = "...";
password = "...";
Определения = Новый WSОпределения("https://api.ispringonline.com/soap/1.2/api?wsdl");
ВебСервис = Новый WSПрокси(Определения, "http://ispringlearn.com/go/services/api/soap", "iSpringOnlineService", "iSpringOnlineSoap");
ТипПараметраCredentials = ВебСервис.ФабрикаXDTO.Тип("http://ispringlearn.com/go/services/api/soap","Credentials");
Credentials = ВебСервис.ФабрикаXDTO.Создать(ТипПараметраCredentials);
Credentials.accountUrl = AccountUrl;
Credentials.email = email;
Credentials.password = password;
ТипAddOrganizationRequest = ВебСервис.ФабрикаXDTO.Тип("http://ispringlearn.com/go/services/api/soap","AddOrganizationRequest");
AddOrganizationRequest = ВебСервис.ФабрикаXDTO.Создать(ТипAddOrganizationRequest);
AddOrganizationRequest.Credentials = Credentials;
AddOrganizationRequest.name = "EkonikaN";
AddOrganizationRequest.description = "Dobavlena programmno";
Результат = ВебСервис.addOrganization(AddOrganizationRequest);
ПоказатьНо в таком виде снова получаю ошибку аутентификации:
Ошибка при вызове метода контекста (addOrganization)
Результат = ВебСервис.addOrganization(AddOrganizationRequest);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Authorization failed
Код ошибки: client
(24) если ругается на Authorization failed, то значит запрос в общем правильный и параметры получены.
Проверяйте имя и пароль. Может где пробел затесался.
Скопируйте из своего кода и вставьте на вход.
Проверьте настройки на сайте. Может там где доступ настраивается.
Проверяйте имя и пароль. Может где пробел затесался.
Скопируйте из своего кода и вставьте на вход.
Проверьте настройки на сайте. Может там где доступ настраивается.
Вот так вот:
AccountUrl = "http://econika-dev.ispringonline.ru";
email = "...";
password = "...";
Хост = "api.ispringonline.ru";
СтрокаXML = "
|<?xml version=""1.0"" encoding=""utf-8""?>
|<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""
| xmlns=""http://ispringlearn.com/go/services/api/soap"">
| <SOAP-ENV:Body>
| <getOrganizationsRequest>
| <credentials>
| <accountUrl>"+AccountUrl+"</accountUrl>
| <email>"+email+"</email>
| <password>"+password+"</password>
| </credentials>
| </getOrganizationsRequest>
| </SOAP-ENV:Body>
|</SOAP-ENV:Envelope>";
HTTPЗапрос = Новый HTTPЗапрос(Хост);
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаXML);
Соединение = Новый HTTPСоединение(AccountUrl, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Попытка
Если HTTPОтвет.КодСостояния <> 200 Тогда
Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
КонецЕсли;
Исключение
КонецПопытки;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот