8.х WEB Работа с web-сервисами

Тема в разделе ""1C:Web-Сервер"", создана пользователем alexburn, 10 дек 2013.

  1. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Приветствую вас! Не так давно начал работать с такими инструментами. Хочется разобраться более детально. Например, создаю подключение к внешнему веб-сервису:
    Код:
    АдресСервера = "http://192.168.205.36/dkbm-ws-1.0/services/kbmToServiceNoMtom?wsdl;"
    Определения = Новый WSОпределения(АдресСервера, "Логин", "Пароль");
    Прокси = Новый WSПрокси(Определения, "http://impl.ws.dkbm.rsa.com/", "policyLossService", "getLossStatus");
    
    Вылетает с ошибкой:
    По сути проблемы как таковой нет, если вбивать строчку АдресСервера в браузер, то все нормально подключается (выдается xml).
    В чем может быть ошибка ?
    Последнее редактирование модератором: 8 мар 2014
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    в wsdl есть ссылка на пространство имен _http://www.w3.org/2005/05/xmlmime, о котором 1с ничего не знает и, соответственно, не может проверить валидность ответа сервиса, как и разобрать его ответ, поэтому валится с ошибкой
  3. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ок, а как побороть такое "не знание" ?
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    найти dtd этого добра и скормить его 1с. только оно здоровое емнип
  5. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    конкретнее - сохранить wsdl к себе, прямо в него дописать нужные типы из этого пространства имен и WSОпределения из этого файла подтягивать
  6. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Хорошо, спасибо большое, буду иметь ввиду. Чуть позже я вернусь к этому вопросу.
  7. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Как и обещал, возвращаюсь:))) Пишу на 8.3 динамическое обращение к сервисам.
    Уважаемый nickpugachev, не могли бы вы более подробно рассказать, что да как, как законнектиться чтобы получить wsdl ? и как потом подтянуть определения ?
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    ок, чтобы получить wsdl описание веб-сервиса надо дернуть ссылку на сервис с параметром wsdl, типа такого http://localhost/myservices/myservice.asmx?wsdl
    собственно в WSОпределения можно сразу этот адрес и скормить, он сам все данные скачает, но если там будут ссылки на пространства имен, которые 1с не знает, а сами типы из этого пространства имен описаны не будут там же - он споткнется. тогда описание сохраняем на диск в виде xml файлика, добиваем в него нужные определения типов руками, а потом передаем этот файл в качестве параметра в WSОпределения.
    Самый простой вариант будет выглядеть так:
    Код:
    Определения = Новый WSОпределения("http://localhost/myservices/myservice.asmx?wsdl", "user", "password");
    Прокси = Новый WSПрокси(Определения, "uri:пространства-имен-веб-сервиса", "ИмяВебСервиса");
    Прокси.Пользователь = "user";
    Прокси.Пароль = "password";
    // теперь дергаем сервис
    ПолученноеЗначение = Прокси.GetList();
    
    для того, чтобы создать переменные каких-то специфичных типов для передачи сервису в качестве параметров у WSОпределения есть свойство ФабрикаXDTO
  9. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ага, так и думал. Походу нужно коннектиться по HTTP на сервис, далее ответ сервиса сохраняем в xml. Потом уже этот файл xml скармливаем WSОпределению() ?
    А для чего через прокси коннектиться ? Сори за такие вопросы, первый раз такую штуку реализовываю :)
    И вообще странно что 8.3 таких вещей не умеет :((((
  10. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    wsdl сохранять и редактировать надо только если там не хватает определений пространств имен, если с ним все нормально - можно указывать напрямую адрес сервиса с параметром wsdl

    а WSПрокси используется потому что это не статическая ссылка на сервис. статические ссылки (которые к конфигурацию вшиты) - через WSСсылки живут
  11. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    При прямом обращении к веб-сервису вываливается с ошибкой (как в первом сообщении). Полазил по инету, в т.ч. и на мисте, там поднимался такой вопрос. Походу РСА-шники все шифруются и не регламентируют свои веб-сервисы в открытый доступ, отсюда и ошибки. Значит буду сохранять ответ HTTP в xml, и далее уже подсовывать его определению.

    По поводу прокси понял, спасибо :)
  12. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    они не шифруются, они просто не рассчитывали на то, что 1с не знает таких пространств имен :)
    все-таки все остальные (.net, java, delphi и т.д.) их знают
  13. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ок, спасибо большое за поддержку :)

    Пойду пилить :)
  14. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Очередная трабла, как можно сохранить ответ сервера по HTTP в файл ?
  15. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Получилось :))))

    Теперь как туда вставить то пространство имен, которого нет в 1С ?

    Или тупо подсунуть его (сохраненный файл) Определениям ?
  16. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Сори, ребят, требуется подставить в файл вот такую строчку:
    Как можно это сделать ? (туплю жестко, с xml давно не работал). Тут походу нужно использовать такой код:
    Код:
    ИзменениеXML.ОткрытьФайл(ВыходнойФайл, "UTF-8");
    ИзменениеXML.ЗаписатьСоответствиеПространстваИмен();
  17. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    вот тут либо рукоблудием заниматься, либо упорно долбиться об ЧтениеXML+ЗаписьXML
  18. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Рукоблудия походу не избежать, думал кто-нибудь наводку даст :)
  19. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вручную прописал необходимое пространство, подключаю Определения через файл, в итоге 1С-ка отваливается с дампом :((((
    Что за фигня такая :))) ?
  20. web.num
    Offline

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    905
    Симпатии:
    4
    Баллы:
    29
    Решил этот вопрос?

Поделиться этой страницей