![]() |
![]() |
![]() |
|
Столкнулся с WSDL на нестандартном порту. | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
28.09.20
✎
09:02
|
Web-сервис на не стандартном порту
Подскажите, если допустим, отредактирую WSDL-файл, есть возможность создать WS Определение из этого файла, а не из URL? |
|||
1
NorthWind
28.09.20
✎
09:18
|
проще всего будет попробовать.
Вообще так делают, вот реальный кусок из wsdl тестового сервиса Меркурия <wsdl:service name="DictionaryServiceBindingQSService"> <wsdl:port binding="tns:DictionaryServiceBinding" name="DictionaryServiceBindingQSPort"> <soap:address location="https://api2.vetrf.ru:8002/platform/services/2.1/DictionaryService"/> </wsdl:port> </wsdl:service> |
|||
2
NorthWind
28.09.20
✎
09:20
|
ссылку задать как file://, например
|
|||
3
Гений 1С
гуру
28.09.20
✎
09:22
|
(2) Да, до меня тоже дошло через file, работает:
Определение = Новый WSОпределения("file://c:/tmp/ws_clientsexhange.xml", "Robot", "******"); |
|||
4
Гений 1С
гуру
28.09.20
✎
09:25
|
(1) да, спасибо, именно в Location добавил порт и все заработало. ;-)
|
|||
5
Гений 1С
гуру
29.09.20
✎
21:38
|
Кому надо, вот код:
Функция ПодключитьсяКСервисуОбменаКонтрагентами() Экспорт СтруктураСервиса = Новый Структура("ОК, Ошибки", истина, ложь); Логин = Константы._СервисОбменаКонтрагентами_Логин.Получить(); Пароль = Константы._СервисОбменаКонтрагентами_Пароль.Получить();; WSDLТекст = СокрЛП(Константы._СервисОбменаКонтрагентами_WSDLТекст.Получить()); Попытка Если ЗначениеЗаполнено(WSDLТекст) Тогда //WSDL файл локальный, если нужно менять порты ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml"); Адрес = ИмяВременногоФайла; Адрес = СтрЗаменить(Адрес, "\", "/"); Адрес = "file://" + Адрес; Т = Новый ТекстовыйДокумент(); Т.УстановитьТекст(WSDLТекст); Т.Записать(ИмяВременногоФайла); Иначе //Пример адреса: "http://127.0.0.1/buh/ws/ws_clientsexhange.1cws?wsdl" Адрес = Константы._СервисОбменаКонтрагентами_Адрес.Получить(); КонецЕсли; Определение = Новый WSОпределения(Адрес, Логин, Пароль); ПространствоИмен = "http://www.fixinchik.ru/ClientsExchange"; Сервис = Новый WSПрокси(Определение, ПространствоИмен, "_ОбменКонтрагентами", "_ОбменКонтрагентамиSoap" ); Сервис.Пользователь = Логин; Сервис.Пароль = Пароль; СтруктураСервиса.Вставить("Сервис", Сервис); Исключение СтруктураСервиса.ОК = ложь; СтруктураСервиса.Ошибки = ОписаниеОшибки(); КонецПопытки; Возврат СтруктураСервиса; КонецФункции |
|||
6
lEvGl
гуру
29.09.20
✎
23:04
|
что бы сразу не написать адрес?
"http://127.0.0.1:порт/buh/ws/ws_clientsexhange.1cws?wsdl"; зачем эти пляски с константами и файлами |
|||
7
Гений 1С
гуру
30.09.20
✎
07:58
|
(6) ну наверное потому, что так не работает (сразу), мой юный друг. Я пробовал. ;-)
|
|||
8
lEvGl
гуру
30.09.20
✎
08:50
|
(7) я тоже пробовал, нормально. может тебе не сразу надо?
|
|||
9
trad
30.09.20
✎
09:47
|
(7) а что не работает ты уже выяснил?
Просто то что ты творишь - это дикость. |
|||
10
Гений 1С
гуру
30.09.20
✎
10:19
|
(8) (9) ну я же писал, что по адресу вида "http://127.0.0.1:порт/buh/ws/ws_clientsexhange.1cws?wsdl" виден WDSL-файл, но сам веб-сервис не коннектится. Пролема именно в location. Решается только подменой location в файлах.
Порт 80 заменен на нестандартный. |
|||
11
trad
30.09.20
✎
11:02
|
(10) Т.е. в location в wsdl указан один порт, а сам сервис на другом порту?
Я правильно понял? Т.е. wsdl не соответствует сервису? Ну тут два варианта: либо авторы сервиса поступают, мягко говоря, странно. Либо ты пользуешься каким-то левым wsdl. |
|||
12
trad
30.09.20
✎
11:03
|
И первый вариант я склонен считать наименее вероятным.
|
|||
13
lEvGl
гуру
30.09.20
✎
11:44
|
(10) странная история.. порт веб сервера не стандартный или еще какой то, не пойму? то есть при обращении к wsdl там неверные настройки указаны? может после смены порта не обновляли публикацию?
|
|||
14
Гений 1С
гуру
30.09.20
✎
15:43
|
(11) все там правильно, почитай ветку, на которую я ссылалюсь. HTTP на IIS работает не на 80-м порту. 1С при публикации естественно, никакой порт в Location не указывает, или я не знаю, где задать.
|
|||
15
Гений 1С
гуру
30.09.20
✎
15:47
|
(11) в локатион порт вообще не пишется, я не знаю, как настроить в 1С, чтобы она там порт указывала. Наверное, нет такой возможности.
|
|||
16
trad
30.09.20
✎
17:56
|
(15) В location порт пишется как часть url
Если веб-сервис выставляет 1С, и веб-сервис доступен по порту отличному от 80, например http://xxx.yyy.zzz:88/appName/ws/wsName то в wsdl по адресу http://xxx.yyy.zzz:88/appName/ws/wsName?wsdl автоматически будет сгенерирован с таким location location="http://xxx.yyy.zzz:88/appName/ws/wsName" |
|||
17
trad
30.09.20
✎
17:58
|
и собственно любой клиент веб-сервиса обязан смотреть wsdl и стучаться по тому url который там указан
|
|||
18
Гений 1С
гуру
01.10.20
✎
15:44
|
(16) не будет. У меня там не :88, а обычный порт.
|
|||
19
Гений 1С
гуру
01.10.20
✎
15:45
|
т.е. если я захожу в http://xxx.yyy.zzz:88/appName/ws/wsName, то в location без :88
|
|||
20
Гений 1С
гуру
01.10.20
✎
15:45
|
Может надо как-то для этого IIS конфигурить, не знаю, у клиента бюджет не резиновый, я сделал ему по рабоче-фиксински.
|
|||
21
trad
01.10.20
✎
17:06
|
(19) значит проброс порта сделан. И это шляпа ленивого одмина
|
|||
22
Гений 1С
гуру
02.10.20
✎
08:46
|
(21) вот видишь, не все так просто... а ты не зная броду, начинаешь критиковать. ;-) Поучился бы лучше, как обходить препятствия.
|
|||
23
trad
02.10.20
✎
09:06
|
(22) все как раз просто
Чему тут учится? Гомнорешениям? |
|||
24
Гений 1С
гуру
02.10.20
✎
09:31
|
(23) ну расскажи как бы ты решал, гуру. ;-) только не напрягая админа. слушаю.
|
|||
25
trad
02.10.20
✎
09:40
|
(24)
Варианты: 1. Напрячь админа 2. Сделать его работу самому 3. Скачать wsdl, поправить локейшн, исправленное залить в WS ссылку. А не это вот в (5) И давай ка, генаша, без приказного порядка. Адью |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |