8.х Публикация веб-сервиса

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Tasya, 30 ноя 2015.

  1. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Добрый день!

    Есть база, опубликована на веб-сервере, который поднят на сервере, выставленном в интернет.
    Подключение к базе проходит по ардресу https://xxxxx.by/itil
    Публикую на данном веб-сервере веб-сервис.
    По адресу https://xxxxx.by/itil/ws/exchange/?wsdl открывается схема веб-сервиса.
    Но в этой схеме в строке, где прописывается адрес публикации веб-сервиса (soapbind:address location) прописан не адрес, по которому подключаемся к базе из интернета, а локальный адрес сервера в сети https://xxxxx.local.x.by.

    Когда я подключаюсь к веб-сервису из других приложений, то они не распознают этот адрес.
    Может кто-то сталкивался с публикацией веб-сервиса и поборол эту проблему?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Другие приложения долбятся на вебсервер по адресу, доступному извне. Если другие приложения находятся внтури локальной сети, то к вебсерверу можно обращатся по адресу машины в локальной сети.
  3. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Вот в этом и проблема. Другое приложение это мобильное приложение. И оно может подключится только через интернет. Мне нужно. чтобы в схеме wsdl прописывался именно адрес для доступа извне
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Соответствие локального адреса машины и внешнего адреса настраивается на маршрутизаторе. Это не проблемы 1С и web-сервера типа Apache/IIS
  5. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    То есть это не в IIS нужно копаться? И в wsdl-схеме все-таки должен прописываться внутренний адрес сервера?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Ответ "да" на оба вопроса.
    Веб-сервер занимается тем, что все запросы определенного вида на порт 80 отсылает к сервису 1С и обратно к клиенту.
  7. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    А подскажите, пожалуйста, еще один момент.
    Если веб-сервис опубликован на удаленном веб-сервере,то по какому порту работает веб-сервис с центральным сервером 1С?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    по тому, который "слушает" веб-сервер, через который опубликована база.
  9. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    То есть мобильное приложение будет работать также как и веб-клиент: к веб-серверу по https:443. а от веб-сервера к базе по tcp:1541?
  10. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Ошибку на удаленном веб-сервере побороть не удалось. Решила попробовать поднять локальный веб-сервер, там где стоит сама база.
    Подключаюсь по http без всяких сертификатов.

    По ссылке http://xxx.xx.x.x/itil/ws/exchange/?wsdl открывается окно с авторизацией, ввожу данные и получаю wsdl-схему.
    В мобильном приложении по кнопке подключаюсь к веб-сервису и пытаюсь выполнить операцию.

    Определение = Новый WSОпределения("http://xxx.xx.x.x/itil/ws/exchange/?wsdl", "IUSR", "AAAqqq111");
    Сообщить(Определение);
    Прокси = Новый WSПрокси(Определение, "exchange", "Exchange", "ExchangeSoap");
    Сообщить(Прокси);
    Результат = Прокси.ВнесениеСчетчиковОтпечатков(ЭтаФорма.ИнвентарынйНомер, ЭтаФорма.Счетчик);
    Сообщить(Результат);

    Получаю три сообщения:
    WSОпределения
    WSПрокси
    Ошибка при вызове метода контекста (Внесение счетчиков отпечатков): Ошибка вызова операции сервиса: {exchange}:Exchange: ВнесениеСчетчиковОтпечатков(): Аутентификация пользователя не выполнена

    Почему возникает эта ошибка, если я Определение и Прокси устанавливаю?
  11. TopicStarter Overlay
    Tasya
    Offline

    Tasya Опытный в 1С

    Регистрация:
    9 сен 2013
    Сообщения:
    148
    Симпатии:
    3
    Баллы:
    29
    Решила еще сообщить Прокси.Пароль и Прокси.Пользователь - выдает пустые строки.
    Переписала процедуру.

    ИмяПользователя = "IUSR";
    Пароль = "AAAqqq111";
    Определение = Новый WSОпределения("http://xxx.xx.x.x/itil/ws/exchange/?wsdl", ИмяПользователя, Пароль);
    Сообщить(Определение);

    Прокси = Новый WSПрокси(Определение, "exchange", "Exchange", "ExchangeSoap");
    Прокси.Пользователь = ИмяПользователя;
    Прокси.Пароль = Пароль;

    Результат = Прокси.ВнесениеСчетчиковОтпечатков(ЭтаФорма.ИнвентарынйНомер, ЭтаФорма.Счетчик);
    Сообщить(Результат);

    Выдало другую ошибку: Ошибка Soap сервера: нарушение прав доступа к операции web-сервиса
    --- Объединение сообщений, 10 дек 2015 ---
    Ура! Ошибка исправлена. У пользователя IUSR каким-то образом слетели все права.
    Последнее редактирование: 10 дек 2015

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