Узел запросов SOAP Websphere Message Broker вызывает веб-сервис.NET в режиме шлюза (без WSDL)

Я уже давно борюсь с этой проблемой, и все результаты поиска (и многие из них я прочитал), похоже, не относятся к моей ситуации.

У меня есть поток сообщений Websphere Message Broker с подпотоком, который вызывает веб-службу, написанную в Visual Studio. Я пытаюсь вызвать этот веб-сервис в режиме шлюза, что означает, что у меня нет WSDL для подключения к свойствам узла запросов SOAP в наборе инструментов Broker, который я использую для написания этого потока.

Я получаю сообщение об ошибке:

Сообщение с действием SendEmail не может быть обработано в получателе из-за несоответствия ContractFilter в EndpointDispatcher. Это может быть связано либо с несоответствием контракта (несоответствующие действия между отправителем и получателем), либо с несоответствием привязки / безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют одинаковый контракт и одинаковую привязку (включая требования безопасности, например, Сообщение, Транспорт, Нет).

Я не уверен, как поступить с этим. Из-за режима шлюза многие свойства не настраиваются в свойствах узла запросов SOAP. Могу ли я установить их в коде ESQL, возможно, в каком-нибудь сообщении, например HTTPRequestHeader?

Я использую Websphere 8, Broker Toolkit 7.5. Транспорт для сообщения - HTTP, а SSL не используется. WS-Addressing также не используется.

Любые предложения будут приветствоваться.

1 ответ

Да, в режиме шлюза вам не нужен WSDL. Ваша целевая веб-служба требует дополнительной информации, как показано ниже.

le.getRootElement().evaluateXPath("?Destination/?SOAP/?Request/?WSA/?Action[set-value('"+Action+"')]");

Попробуйте установить локальное место назначения, как указано выше. Действие может быть установлено в соответствии с файлом WSDL, который вы получили.

Как искать действие: Сначала используйте URL провайдера:

http://URL?WSDL

После этого ищите слово действия. Вы можете увидеть действие запроса, как показано ниже.

<input wsam:Action="http//ActionURL.bla.bla.bla" message="tns:blabla" /> 

Так просто SET Action = 'http//ActionURL.bla.bla.bla'

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