![]() |
|
Обмен с веб сервисом | ☑ | ||
---|---|---|---|---|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |