Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Обмен с веб сервисом

Обмен с веб сервисом
Я
   AlekseyY
 
21.11.18 - 20:33
Доброго времени суток! Делаю обмен с веб сервисом:

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 ссылке...в общем беда... Подскажите кто может, Спасибо!
 
 
   Остап Сулейманович
 
1 - 21.11.18 - 20:47
(0) Примерный ход событий

Адрес = ".../GEODATA/ws/wsGEOData/?wsdl";
Попытка
  Определения = Новый WSОпределения(Адрес, "", "", 60);
Исключение
  ТекстОшибки = НСтр("ru = 'Не удалось установить соединение с сервером. Повторите попытку позже.'", "ru");
  Возврат Неопределено;
КонецПопытки;

URI = "http://...";;
Прокси = Новый WSПрокси(Определения, URI, "wsGEOData", "wsGEODataSoap");

Возврат Прокси;

После этого можно через прокси вызывать методы ВЕБ-сервиса. Например
Список = Прокси.СписокПутевыхЛистов(ДатВыборки);
Это для примера. У твоего ВЕБ-сервиса и методы и параметры свои.
   Остап Сулейманович
 
2 - 21.11.18 - 20:48
+(1) В общем сначала нужно получить проксю :

Определения = Новый WSОпределения(Адрес, "", "", 60);
Прокси = Новый WSПрокси(Определения, URI, "wsGEOData", "wsGEODataSoap");
   AlekseyY
 
3 - 21.11.18 - 21:02
То, что нужно получить проксю , понимаю) не понимаю как ее получить из HTTPОтвет.ПолучитьТелоКакСтроку();
   Остап Сулейманович
 
4 - 21.11.18 - 21:07
(3) Не нужно ее получать из HTTPОтвет. Оно там возвращает просто описалово.
Нужно выполнить две строчки кода из (2). Все.
   AlekseyY
 
5 - 21.11.18 - 21:12
Авторизацию не пройду)если бы ее не было, без проблем... все как у вас написано, но тут она нужна. Поэтому делаю через HTTPСоединение, в WSПрокси вроде как нельзя вставить заголовки
   Остап Сулейманович
 
6 - 21.11.18 - 21:16
(5) Кто помешает вот здесь :

Новый WSОпределения(Адрес, "Логин", "пароль", 60);

указать учетные данные?
   Остап Сулейманович
 
7 - 21.11.18 - 21:18
+ (6) У меня получалось. Может у вас особая 1С и в конструкторе WSОпределения это невозможно?
   AlekseyY
 
8 - 21.11.18 - 21:22
наверное))но честно не знаю , как впихнуть это 
Заголовки=Новый Соответствие;
Заголовки.Вставить("Content-Charset", "UTF-8");
Заголовки.Вставить("Authorization", "Token testtoken");

в 
Новый WSОпределения(Адрес, "Логин", "пароль", 60);
   Chameleon1980
 
9 - 21.11.18 - 21:25
Не нужно ничего никуда впихивать
создавайте определение (там логин и пароль укажете)

из определения создавайте прокси

из прокси используйте методы, предоставленные сервисом
все.
пора бы уже давно начать пробовать
   Chameleon1980
 
10 - 21.11.18 - 21:26
а вообще можно еще Ws ссылку в конфу вставить
 
 Рекламное место пустует
   Chameleon1980
 
11 - 21.11.18 - 21:27
при вставке вс ссылки и пароль укажете с логином
и будете уже просто не динамическую ссылку использовать, а из конфы.
пробуйте
   AlekseyY
 
12 - 21.11.18 - 21:37
авторизация идет по заголовкам 
Заголовки.Вставить("Authorization", "Token testtoken");

впихивание ссылки в 1с не проходит) в том и вопрос. если впихнуть сделать как тут - 

Определения = Новый WSОпределения(Адрес, "", "", 60);
Прокси = Новый WSПрокси(Определения, URI, "wsGEOData", "wsGEODataSoap"); - не работает, получу ошибку

сразу нужно пройти авторизацию, она идет через заголовки,
которые доступны в  HTTPСоединение, дальше получаю ответ - в строке описание, то что я получил бы просто вбив ссылку "http://Testtest.ru:8012/?wsdl";, если бы не было авторизации. и вот не знаю, что с этой строкой делать(
   Chameleon1980
 
13 - 21.11.18 - 21:45
в браузере открывается ссылка эта?
скрин покаж
   Chameleon1980
 
14 - 21.11.18 - 21:45
у тебя должно, наверное быть что-то
типа
/ws/blabla.1cws?wsdl
   Chameleon1980
 
15 - 21.11.18 - 21:47
web сервис сторонний?
или твой же, но из другой 1с
если твой же
покажи как он выглядит в дереве объектов
   AlekseyY
 
16 - 22.11.18 - 04:28
у меня есть только - "http://Testtest.ru:8012/?wsdl";;
Добавлять в дерево объектов нет смысла, просто выдаст ошибку -
Ошибка доступа к файлу 'http://Testtest.ru:8012/?wsdl'
по причине: Ошибка работы с Интернет:  доступ запрещен (403).  

тоже самое через определение
Ошибка доступа к файлу 'http://Testtest.ru:8012/?wsdl'
по причине: Ошибка работы с Интернет:  доступ запрещен (403).
   Chameleon1980
 
17 - 22.11.18 - 05:05
кто вам дал эту строку?
   ДенисЧ
 
18 - 22.11.18 - 05:18
Ну 403 тебе скорее прокси выдает, а не веб-сервис...
   AlekseyY
 
19 - 22.11.18 - 06:00
тут Ответ = HTTPОтвет.ПолучитьТелоКакСтроку(); 

получаю это https://yadi.sk/d/haG6Z8OQNkdbFA (строка) сохранил в xml.На сколько понимаю это схема веб сервиса, как теперь ее использовать не понимаю
   Chameleon1980
 
20 - 22.11.18 - 07:12
   AlekseyY
 
21 - 22.11.18 - 07:56
(20) это что?)
   AlekseyY
 
22 - 22.11.18 - 07:57


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует