webMethods pub.client.http выдает ошибку на 401

Я использую webMethods из SAG и, кажется, если служба

pub.client.http

выдает исключение по коду статуса 401 "Несанкционированный".

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

getLastError

содержит строку "Несанкционированный", но не код состояния. За исключением того, что я не хочу начинать анализ сообщений об исключениях...

Есть идеи?

4 ответа

Решение

Спросил SAG старший консультант. Это нормальное поведение. Нет флага, который вы можете установить для принудительного подавления этого исключения...

Вы можете подавить исключение и вернуть статус HTTP 401, как и любой другой ответ HTTP. Перейдите в расширенные настройки администратора IS и установите:

      watt.net.http401.throwException=false

Обратите внимание, что это настройка для всего сервера, поэтому она повлияет на все ваши приложения/службы, использующие pub.client:http.

Выходной параметр header от pub.client.http Вызов должен содержать информацию, которую вы ищете:

Заголовок Документ Условный. Заголовки ответа HTTP.

Описание ключа

Строки Document Fields в заголовке ответа, где имена ключей представляют
имена и значения полей представляют значения полей.
status String HTTP-код состояния ответа.
statusMessage String HTTP-сообщение о статусе ответа.

Для получения дополнительной информации см. Справочную страницу по встроенным службам сервера интеграции WebMethods.

Согласно комментарию @Hugo Ferreira, вероятно, существуют ограничения ACL как в вашей среде webMethods, так и в URL ваших клиентов.

Вещи, которые вы должны рассмотреть:

  1. Ваш сервер webMethods находится в закрытой среде, где необходимо подключиться к прокси, чтобы получить исходящий запрос. Что, вероятно, вы можете исследовать, запустив программу веб-браузера непосредственно с вашего сервера wM по направлению к URL-адресу (т.е. используя SSH для запуска firefox в моем случае, и появилось всплывающее окно)

    Всплывающее окно запроса на аутентификацию

  2. У клиента, на который пойдет ваш запрос, есть HTTP для запросов аутентификации


Решение

Чтобы пройти это все, что вам нужно сделать, это ввести authuser/password или любой другой механизм аутентификации, например Kerberos, токен и т. д. внутри pub.client:http

auth pass имя пользователя / пароль

Другие вопросы по тегам