Версия для печати темы (https://pro1c.org.ua/index.php?s=79556573f08f52a28929ac0a66c1e772&showtopic=49038)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Обмен со сторонним веб сервисом

Автор: AlekseY88 22.11.18, 5:19

Доброго времени суток! Делаю обмен с веб сервисом:

URLобмена = "Testtest.ru:8012";

АдресСервиса = "http://Testtest.ru:8012/?wsdl";;

/// URLобмена и АдресСервиса  вымышленные:)    

Попытка

  Соединение = Новый HTTPСоединение(URLобмена);

Исключение

Ответ=ИнформацияОбОшибке().Описание;

КонецПопытки;    

ФайлРезультата = ПолучитьИмяВременногоФайла();

Заголовки=Новый Соответствие;

Заголовки.Вставить("Content-Charset", "UTF-8");

Заголовки.Вставить("Authorization", "Token testtoken");


HTTPЗапрос = Новый HTTPЗапрос(АдресСервиса, Заголовки);

HTTPОтвет = Соединение.Получить(HTTPЗапрос);

Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();



В ответе получаю строку в которой описана "http://Testtest.ru:8012/?wsdl", если бы не было авторизации и просто вбита ссылка в браузер. Честно, запутался и даже не знаю куда копать... как из этого ответа создать WSОпределение, как создать Прокси, как обратиться к методам, которые были доступны просто по WS ссылке...в общем беда... Подскажите кто может, Спасибо!

Автор: nik389 22.11.18, 12:25

Можно так:

&НаСервере
Функция СоздатьСущностиДляРаботыССайтом(ПараметрыВозврата)
    НетОшибок = Истина;
    Попытка
        Определения = Новый WSОпределения(Сайт,Логин,Пароль);    
    Исключение
        Сообщить(ОписаниеОшибки());
        НетОшибок = Ложь;  
        Возврат НетОшибок;
    КонецПопытки;
    ИмяСервиса = Сервис;
    Попытка
    Прокси = Новый WSПрокси(Определения,ИмяСервиса,"Exchange_ukrmarketplaceservice","Exchange_ukrmarketplaceserviceSoap");
    Прокси.Пользователь = Логин;
    Прокси.Пароль = Пароль;
    Исключение
        Сообщить(ОписаниеОшибки());
        НетОшибок = Ложь;
        Возврат НетОшибок;
    КонецПопытки;
        
    ПараметрыВозврата.Вставить("Сервис",Сервис);
    ПараметрыВозврата.Вставить("Прокси",Прокси);

    Возврат НетОшибок;
КонецФункции


а дальше:
&НаСервере
Процедура ПолучитьНоменклатуруССайта()
    ВебОбъекты = Новый Структура;
    Если НЕ СоздатьСущностиДляРаботыССайтом(ВебОбъекты) Тогда
        Возврат;
    КонецЕсли;    
    
    Фабрика = ВебОбъекты.Прокси.ФабрикаXDTO;
    Фильтр = Фабрика.Создать(Фабрика.Тип(ВебОбъекты.Сервис, "Filter"));
    //Фильтр.productId = "";    
    Исключ = Фабрика.Создать(Фабрика.Тип(ВебОбъекты.Сервис, "exception"));
    
    ОтветСервера = ВебОбъекты.Прокси.GetProduct(Фильтр,Исключ);
    
    Попытка
        Продукция =ОтветСервера.product;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua