Имя: Пароль:
1C
1С v8
Обмен с веб сервисом
0 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");
3 AlekseyY
 
21.11.18
21:02
То, что нужно получить проксю , понимаю) не понимаю как ее получить из HTTPОтвет.ПолучитьТелоКакСтроку();
4 Остап Сулейманович
 
21.11.18
21:07
(3) Не нужно ее получать из HTTPОтвет. Оно там возвращает просто описалово.
Нужно выполнить две строчки кода из (2). Все.
5 AlekseyY
 
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Определения это невозможно?
8 AlekseyY
 
21.11.18
21:22
наверное))но честно не знаю , как впихнуть это
Заголовки=Новый Соответствие;
Заголовки.Вставить("Content-Charset", "UTF-8");
Заголовки.Вставить("Authorization", "Token testtoken");

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

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

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

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

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

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

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