При создании описания сервиса произошла ошибка

Практическое применение механизма WEB-сервисов в системе «1С:Предприятие»

При создании описания сервиса произошла ошибка, Код ответа сервера: 301

Я
   FFrr1C

Подскажите пожалуйста, может кто сталкивался:
создал веб сервис "Price", опубликовал вместе с базой, далее в коде
Определение = Новый WSОпределения("http://localhost/zerkal/ws/Price.1cws?wsdl","admin","123")
дает ошибку
При создании описания сервиса произошла ошибка. URL сервиса: http://localhost/zerkal/ws/Price.1cws?wsdl
Код ответа сервера: 301

 
 

   Имитация работы

Открой адрес в браузере. После получения xml внимательно посмотри на адресную строку. Сравни ее с исходной.

   FFrr1C

браузер пишет:
1C:Enterprise 8 application error:
HTTP: Not found Ошибка при работе с ресурсом /Zerkal/ws/Price/

   FFrr1C Хотя сейчасас в браузере написано следующее:
#exception    "{http://v8.1c.ru/8.2/virtual-resource-system}Exception"
exception    
clsid    "580392e6-ba49-4280-ac67-fcd6f2180121"
reason    404
descr    "HTTP: Not found\nОшибка при выполнении запроса GET к ресурсу /ws/WebPrice:"
#inner    "{http://v8.1c.ru/8.1/data/core}Exception"
inner    
clsid    "a01f465c-ed70-442e-ada5-847668d7a41c"
descr    "Текущему соединению с информационной базой не назначен сеанс"
data    "kg0L3QtSDQvdCw0LfQvdCw0YfQ\r\ntdC9INGB0LXQsNC90YEifSwzNX0="    FFrr1C Что-то совсем запутался, в конфигураторе Web-Сервис назван WebPrice, имя файла публикации Price.1cws в коде Новый WSОпределения("http://localhost/zerkal/ws/Price.1cws?wsdl","admin","123") что нужно указывать?

если WSОпределения("http://localhost/zerkal/ws/Price.1cws?wsdl","admin","123") тогда код ошибки 301

если WSОпределения("http://localhost/zerkal/ws/WebPrice.1cws?wsdl","admin","123") тогда код ошибки 404 и в журнале регистрации запись "Сеанс. Ошибка аутентификации"    Имитация работы

Большую букву Z

   FFrr1C

Я так понимаю все же проблема с аутентификацией, юзер от 1С не подходит..

   Имитация работы

Ок

   FFrr1C

Не понял какой смысл в имени файла публикации если обращение идет через то имя которое в конфигураторе? это имя фала публикации где-то задействовано?

   FFrr1C

Есть ли простое решение чтобы пройти аутентификацию, для НеСисАдмина, что где поставить в пользователях..

Попробуйте новый бесплатный сервис для быстрого анализа кода типовых конфигураций 1c-api.com

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

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

  • Добавить свою публикацию
  • для этого требуется регистрация

В предыдущей статье мы проверяли орфографию с помощью веб сервиса от Яндекса. Сегодня  мы  создадим еще одну обработку с проверкой орфографии, но усложним задачу, если почитать документацию по яндекс спеллер API  можно узнать, что проверка  текста возможна на 3 языках:

  • uk – украинский;
  • en – английский.

Также можно управлять параметрами   проверки:  таблицу берм из описания API  спеллера. Это кстати неправильно по WSDL мы должны получить полное описание сервиса, а тут есть параметр, который вычислить без чтения документации невозможно, но главное что документация есть.

Значение (десятичное)

Описание (пример)

Пропускать слова, написанные заглавными буквами, например, "ВПК".

Пропускать слова с цифрами, например, "авп17х4534".

Пропускать интернет-адреса, почтовые адреса и имена файлов.

Подсвечивать повторы слов, идущие подряд. Например, "я полетел на на Кипр".

Пропускать слова, написанные латиницей, например, "madrid".

Только проверять текст, не выдавая вариантов для замены.

Отмечать слова, написанные латиницей, как ошибочные.

Не использовать словарное окружение (контекст) при проверке. Опция полезна в случаях, когда на вход сервиса передается список отдельных слов.

Игнорировать неверное употребление ПРОПИСНЫХ/строчных букв, например, в слове "москва".

Для того чтобы использовать несколько параметров  их значение просто надо сложить вместе.  Ну и указание формата проверяемого текста : plain — текст без разметки (значение по умолчанию) или  html — HTML-текст.

Для установки параметров добавим к нашей  предыдущей обработке дополнительную  форму с незатейливым название «Настройки» Выглядеть она будет так:

 

Немного изменим код обработки.

Проблема с интернет-поддержкой пользователя

Теперь нам нужно передать не просто текст в веб сервис, а структуру с несколькими параметрами, для этого нам нужно получить описание параметра веб сервиса.

Сначала смотрим, что мы должны передать веб сервису:

 

Операции checkTexts мы должны передать параметр с типом CheckTextRequest, который состоит из  атрибутов: lang, options, format, text.

Код, который осуществляет это следующий:

WSОпределение = Новый WSОпределения("http://speller.yandex.net/services/spellservice?WSDL","", "");       WSПрокси = Новый WSПрокси(WSОпределение, "http://speller.yandex.net/services/spellservice" , "SpellService", "SpellServiceSoap12" ); // Получаем описание параметра веб сервиса ТипWSПараметра = WSПрокси.ФабрикаXDTO.Пакеты.Получить("http://speller.yandex.net/services/spellservice").Получить("CheckTextRequest"); //Создаем параметр на основе типа и заполняем значение параметра WSПараметр = WSПрокси.ФабрикаXDTO.Создать(ТипWSПараметра); WSПараметр.lang = ЯзыкиПроверки; WSПараметр.options = Параметры; WSПараметр.format = ТипТекста; WSПараметр.text =текст; РезультатВебОперации = WSПрокси.checkTexts(WSПараметр);

Заметьте, для облегчения  понимания работы с веб сервисом я использовал  Wsссылку из структуры метаданных конфигурации, но работаем мы с динамической ссылкой.

Параметры передали, теперь можно обрабатывать результат,  в предыдущем примере мы это сделали без проблем, запускаем обработку и … у нас выскакивает ошибка, почему? У нас немного не тот формат результата, который возвращается у  операции  checkText формат результата SpellResult (http://speller.yandex.net/services/spellservice) а у операции checkTexts формат другой CheckTextsResponse (http://speller.yandex.net/services/spellservice),

который состоит уже из SpellResult – ов.  Посмотрим, как выглядит ответ сервера в XML формате, воспользовавшись soapUI.

 

Модифицированный код разбора результата будет такой

для каждого строки1 из РезультатВебОперации.ArrayOfSpellResult.SpellResult цикл для каждого строки из строки1.error цикл стр0= ВариантыНаписания.Добавить(); стр0.слово= строки.word; стр0.Позиция = строки.pos; для каждого вариантыЗамены из строки.s цикл стр=слова.добавить(); стр.слово=строки.word ; стр.ВариантНаписания= вариантыЗамены; стр.строка = строки.row; стр.Позиция = строки.pos; конеццикла; конеццикла; конеццикла;

как видите, мы просто спустились по структуре ХМЛ до уровня, на котором уже есть нужные нам данные.

Пример обработки доступен по ссылке: http://goo.gl/JZ9Ag

 

предыдущие ()все

≡ к списку статей

Коды ответов сервера и ошибки. HTTP 200, 301, 404, 302, 500, 503, 550 и др.

Ошибка "Узел не прошел проверку" при обращении к веб-сервису

Описание проблемы

В платформе 8.3.10 была переработана логика валидации доверенных сертификатов.

При работе в ОС Windows для проверки сертификата происходит обращение к внешнему ресурсу в сети Internet. Для успешного выполнения данной операции у  пользователя, от которого запускается процесс rphost, должна быть возможность обратиться к этому внешнему ресурсу, а также сам ресурс должен быть доступен.

В случае некорректно заданных настроек доступа в Internet после перехода на 8.3.10 с более ранних версий платформы могут возникать ошибки:

а) при обращении к веб-сервисам или получении определения веб-сервиса по причине «ошибка работы с Интернет: Удаленный узел не прошел проверку»

б) при попытке выполнить OpenID-авторизацию вида «Ошибка подключения к OpenID провайдеру», сопровождающиеся появлением в технологическом журнале событий EXCP вида:

00:01.226030-0,EXCP,2,process=rphost,p:processName=base_3,OSThread=6332,t:clientID=7298,t:applicationName=WebServerExtension,t:computerName=server-1,t:connectID=212125,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr="src\Libxml2_Intf.cpp(141):

9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://mycloud.ru/openid/e1cib/oid2op’: src\HTTPImpl.cpp(2598):

896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет:   Удаленный узел не прошел проверку"

Также может не происходить попытка OpenID-авторизации, сопровождающаяся появлением в технологическом журнале аналогичных указанным ранее событий EXCP.

Диагностика проблемы

В большинстве случаев проблема может быть вызвана отсутствием у пользователя, под которым запускается rphost, доступа к необходимому ресурсу в Internet.

Целенаправленно только сайты, предназначенные для валидации сертификатов, никто не блокирует, поэтому скорее всего у пользователя не доступен ни один сайт (можно легко проверить, запустив браузер от имени данного пользователя – зажать Shift, правой кнопкой мыши на ярлык браузера, «Запустить от имени другого пользователя»).

Однако расследование необходимо проводить именно на том примере, на котором ошибка воспроизводится.

Наиболее распространенные причины:

  • Доступ к ресурсу заблокирован через файл hosts
  • Нет доступа к ресурсу из-за использования прокси-сервера
  • Ресурс заблокирован firewall
  • Ресурс блокирован антивирусом

Для подробной диагностики ошибки в случае, если причина оказалась нетривиальной, рекомендуется настроить сбор дополнительных event-логов Windows, согласно описанию, приведенному в статье (раздел Use CAPI2 logging)

(ссылка: https://support.microsoft.com/en-us/help/2661254/microsoft-security-advisory-update-for-minimum-certificate-key-length).

Решение проблемы

Про антивирус и firewall все очевидно – проверяем, какие ресурсы блокируются, и понимаем, есть ли в списке нужный нам ресурс (похожий по имени на ссылку на сайт поставщика сертификата, если точное имя сайта неизвестно).

Про настройки прокси и hosts опишем подробнее.

Прокси сервер

1) Запустить Internet Explorer от имени пользователя, под которым работает rphost

2) В меню Свойства браузера (Свойства обозревателя) на закладке Подключения нажать кнопку Настройка сети

3) Если в настройках указано использование прокси-сервера, которая не предусмотрена политикой безопасности (кто-то когда-то установил и забыл) – отключить использование прокси-сервера, сняв соответствующий флаг

4) Если использование прокси действительно предусмотрено, нужно разрешить прямое обращение к ресурсам, на которые пытается обратиться платформа для валидации сертификата, нажав кнопку Дополнительно и указав данный ресурс в качестве исключения для прокси-сервера

Файл hosts

Доступ к некоторым сайтам может блокироваться через файл hosts. Лежит здесь:

Пример того, как блокированный сайт выглядит в файле hosts:

Новый(Тип("WSОпределения"), Параметры) — откуда настройки прокси?

Я
   EuVod Наверное тупой и нубский вопрос..
На сервере выполняется эта строка Новый(Тип("WSОпределения"), Параметры) В параметрах ессно есть путь к вес-сервису. При выполнении 1с-Сервер лезет зачем-то на прокси.

Ошибка "Узел не прошел проверку" при обращении к веб-сервису

(а прокси не умеет ntlm авторизацию, поэтому отлуп)
В настройках IE от имени которого запущена служба агента сервера стоит "Не использовать прокси", файлик inetcfg убирал/добавлял с ключом ntlm="false", перезапускал сервер — ничего не помогает. Тупо лезет не напрямую в инет, а через web-прокси и получается отлоуп по ошибке аутентификации 407.

не могу понять, откуда он (сервер) берет настройку web-прокси.
Если запустить IE от имени этого ползователи и ввести этот ***wsdl — все открывается.

туплю ине могу сдвинуться Если кто сталкивался или есть идеи — буду весьма признателен 
 

   Dunemaster

А на сервере никаких переменных среды не выставлено на тему прокси?

   Serginio1 WSОпределения (WSDefinitions) Из WSDL файлаСинтаксис:

Новый WSОпределения(<МестоположениеWSDL>, <ИмяПользователя>, <Пароль>, <ИнтернетПрокси>, <Таймаут>, <ЗащищенноеСоединение>)
Параметры:

<МестоположениеWSDL> (обязательный) Тип: Строка.
Местоположение WSDL файла, откуда будет получено определение веб-сервисов. <ИмяПользователя> (необязательный) Тип: Строка.
Имя пользователя, которое будет использоваться для аутентификации при получении определений веб-сервисов. <Пароль> (необязательный) Тип: Строка.
Пароль пользователя, который будет использоваться для аутентификации при получении определений веб-сервисов. <ИнтернетПрокси> (необязательный) Тип: ИнтернетПрокси. Содержит объект ИнтернетПрокси, используемый для загрузки WSDL документа по протоколу HTTP.
Если не указан, то используются настройки прокси по умолчанию.
Значение по умолчанию: Неопределено. <Таймаут> (необязательный) Тип: Число.
Таймаут соединения, осуществляемого для загрузки WSDL описания веб-сервиса, в секундах. 0 — не устанавливать таймаут.
Значение по умолчанию: 0. <ЗащищенноеСоединение> (необязательный) Тип: ЗащищенноеСоединениеOpenSSL; ЗащищенноеСоединениеNSS; Неопределено. Объект защищенного соединения для осуществления HTTPS соединения для загрузки WSDL описания веб-сервиса.
Значение по умолчанию: Неопределено.
Описание:

Создает определение веб-сервисов из WSDL файла.

ИнтернетПрокси (InternetProxy)
Свойства:

НеИспользоватьПроксиДляАдресов (BypassProxyOnAddresses)
НеИспользоватьПроксиДляЛокальныхАдресов (BypassProxyOnLocal) Пароль (Password) Пользователь (User) Методы:

Порт (Port) Сервер (Server) Установить (Set) Конструкторы:

Формирование неинициализированного объекта

Описание:

Описывает параметры прокси-серверов для различных протоколов. Допустимые протоколы для использования в объекте ИнтернетПрокси задаются строками http, https и ftp.
Позволяет использовать аутентификацию по имени пользователя и паролю или NTLM (Integrated Security) аутентификацию (в версии 1С:Предприятия под Windows).
NTLM аутентификация используется по умолчанию для прокси-серверов, поддерживающих данный способ аутентификации, и не требует дополнительных настроек, т.е. NTLM аутентификация будет использоваться, если в конструкторе объекта HTTPСоединение прокси не задан или задан, но без указания имени пользователя и пароля. Задание в конструкторе объекта HTTPСоединение прокси с указанным именем пользователя и паролем отключает NTLM аутентификацию, для аутентификации в этом случае используется HTTP Basic аутентификация.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
См. также:    EuVod (2) ничо не выявлено ((  IE открывает замечательно, в прокси нелезет

(3) у нас тут платформа 8.2.19
тут написано:
WSОпределения (WSDefinitions)Из WSDL файла
Синтаксис:

Новый WSОпределения(<МестоположениеWSDL>, <ИмяПользователя>, <Пароль>, <Таймаут>)
и никак ИнтернетПрокси не подпихивается.. либо я чего-то очевидного не вижу.    EuVod

блин.
глаз замылился -оказывается я все это время пялился на Inetcfg.xml, который в папке 1С клиента был.. а не в папке севера. а там наш старый лежал неправильный.

Всем спасибо, все хорошо теперь)

TurboConf 5 — расширение возможностей Конфигуратора 1С

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

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Ошибка при вызове конструктора (WSОпределения)

Я
   Cooper_od {ОбщийМодуль.Обмен.Модуль(41)}: Ошибка при вызове конструктора (WSОпределения)         Определения = Новый WSОпределения(Адрес,,,,60);по причине:
При создании описания сервиса произошла ошибка. http://192.168.60.45/wsExchange/ws/wsExchange.1cws?wsdl

Пытаюсь настроить обмен с мобильным приложением, застрял на этом моменте.
Ошибка выпадает при попытке прочитать данные со стороны мобильного приложения.
если нужны еще какие-то данные спрашиваёте
 
     Cyberhawk

Покажи ошибку на картинке

   cw014

Нет по такому адресу ws?

   Cooper_od

(1) http://i.imgur.com/Kjkfgwz.jpg

   Cooper_od

(2) при обращении по этому адресу получаю XML в браузере

   Cyberhawk

(1) Покажи на картинке содержимое этого WSDL-файла в браузере

   Cooper_od

(5) http://i.imgur.com/J9Ng175.jpg

   cw014 Определения = Новый WSОпределения(Адрес,,,,60); 60 — это параметр "Защищенное соединение"    Cooper_od

(7) это вроде таймаут

   cw014

Посчитай количество параметров и почитай СП

   cw014 WSОпределения (WSDefinitions) Из WSDL файлаСинтаксис:

Новый WSОпределения(<МестоположениеWSDL>, <ИмяПользователя>, <Пароль>, <ИнтернетПрокси>, <Таймаут>, <ЗащищенноеСоединение>)

 
 

   cw014

Ну может я ошибся, сорри

   Cooper_od

http://i.imgur.com/aTPVSAu.jpg

   Cyberhawk

(6) какой-то стремный у тебя WSDL-файл. Где же узлы portType и service, например?

   Cooper_od

(13) а как посмотреть почему эти узлы не создаются, я так понимаю это файл формируется вэб-сервисом, правильно?

   Cooper_od

(13) был косяк с WS-ссылкой, решил ее пересоздать выпадает след ошибка
http://i.imgur.com/z0Yzkxc.jpg

   Serginio1 (15) Сохрани файл на диск. И создавай WSОпределения через него Новый WSОпределения(ПутьКФайлуWSDL);    Cyberhawk

(16) Чую, что не поможет (какая разница конструктору, откуда брать этот файл)

   Cooper_od

Разобрался, была кривая WS-ссылка, при попытке ее исправить выяснил, что к одной операции вэб-сервиса не была подключена процедура по этому по ходу и не стартовал сервис, всем огромное спасибо!

Попробуйте новый бесплатный сервис для быстрого анализа кода типовых конфигураций 1c-api.com

ВНИМАНИЕ!

Использование системы спутникового мониторинга "Скаут"

Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.