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

Столкнулся с WSDL на нестандартном порту.

Столкнулся с WSDL на нестандартном порту.
Я
   Гений 1С
 
28.09.20 - 09:02
Web-сервис на не стандартном порту
Подскажите, если допустим, отредактирую WSDL-файл, есть возможность создать WS Определение из этого файла, а не из URL?
   NorthWind
 
1 - 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>
   NorthWind
 
2 - 28.09.20 - 09:20
ссылку задать как file://, например
   Гений 1С
 
3 - 28.09.20 - 09:22
(2) Да, до меня тоже дошло через file, работает:

Определение = Новый WSОпределения("file://c:/tmp/ws_clientsexhange.xml", "Robot", "******");
   Гений 1С
 
4 - 28.09.20 - 09:25
(1) да, спасибо, именно в Location добавил порт и все заработало. ;-)
   Гений 1С
 
5 - 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"
        );
        
        Сервис.Пользователь = Логин;
        Сервис.Пароль = Пароль;
        СтруктураСервиса.Вставить("Сервис", Сервис);
    Исключение
        СтруктураСервиса.ОК = ложь;
        СтруктураСервиса.Ошибки = ОписаниеОшибки();
    КонецПопытки;
    
    Возврат СтруктураСервиса;    
КонецФункции
   lEvGl
 
6 - 29.09.20 - 23:04
что бы сразу не написать адрес?
"http://127.0.0.1:порт/buh/ws/ws_clientsexhange.1cws?wsdl";;
зачем эти пляски с константами и файлами
   Гений 1С
 
7 - 30.09.20 - 07:58
(6) ну наверное потому, что так не работает (сразу), мой юный друг. Я пробовал. ;-)
   lEvGl
 
8 - 30.09.20 - 08:50
(7) я тоже пробовал, нормально. может тебе не сразу надо?
   trad
 
9 - 30.09.20 - 09:47
(7) а что не работает ты уже выяснил?
Просто то что ты творишь - это дикость.
   Гений 1С
 
10 - 30.09.20 - 10:19
(8) (9) ну я же писал, что по адресу вида "http://127.0.0.1:порт/buh/ws/ws_clientsexhange.1cws?wsdl"; виден WDSL-файл, но сам веб-сервис не коннектится. Пролема именно в location. Решается только подменой location в файлах.
Порт 80 заменен на нестандартный.
   trad
 
11 - 30.09.20 - 11:02
(10) Т.е. в location в wsdl указан один порт, а сам сервис на другом порту?
Я правильно понял?
Т.е. wsdl не соответствует сервису?

Ну тут два варианта: либо авторы сервиса поступают, мягко говоря, странно.
Либо ты пользуешься каким-то левым wsdl.
   trad
 
12 - 30.09.20 - 11:03
И первый вариант я склонен считать наименее вероятным.
   lEvGl
 
13 - 30.09.20 - 11:44
(10) странная история.. порт веб сервера не стандартный или еще какой то, не пойму? то есть при обращении к wsdl там неверные настройки указаны? может после смены порта не обновляли публикацию?
   Гений 1С
 
14 - 30.09.20 - 15:43
(11) все там правильно, почитай ветку, на которую я ссылалюсь. HTTP на IIS работает не на 80-м порту. 1С при публикации естественно, никакой порт в Location не указывает, или я не знаю, где задать.
   Гений 1С
 
15 - 30.09.20 - 15:47
(11) в локатион порт вообще не пишется, я не знаю, как настроить в 1С, чтобы она там порт указывала. Наверное, нет такой возможности.
   trad
 
16 - 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";
   trad
 
17 - 30.09.20 - 17:58
и собственно любой клиент веб-сервиса обязан смотреть wsdl и стучаться по тому url который там указан
   Гений 1С
 
18 - 01.10.20 - 15:44
(16) не будет. У меня там не :88, а обычный порт.
   Гений 1С
 
19 - 01.10.20 - 15:45
т.е. если я захожу в http://xxx.yyy.zzz:88/appName/ws/wsName, то в location без :88
   Гений 1С
 
20 - 01.10.20 - 15:45
Может надо как-то для этого IIS конфигурить, не знаю, у клиента бюджет не резиновый, я сделал ему по рабоче-фиксински.
   trad
 
21 - 01.10.20 - 17:06
(19) значит проброс порта сделан. И это шляпа ленивого одмина
   Гений 1С
 
22 - 02.10.20 - 08:46
(21) вот видишь, не все так просто... а ты не зная броду, начинаешь критиковать. ;-) Поучился бы лучше, как обходить препятствия.
   trad
 
23 - 02.10.20 - 09:06
(22) все как раз просто
Чему тут учится? Гомнорешениям?
   Гений 1С
 
24 - 02.10.20 - 09:31
(23) ну расскажи как бы ты решал, гуру. ;-) только не напрягая админа. слушаю.
   trad
 
25 - 02.10.20 - 09:40
(24)
Варианты:
1. Напрячь админа
2. Сделать его работу самому
3. Скачать wsdl, поправить локейшн, исправленное залить в WS ссылку. А не это вот в (5)


И давай ка, генаша, без приказного порядка. Адью


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