Узел запросов 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'