【问题标题】:Websphere Message Broker SOAP Request Node calling .NET web service in gateway mode (no WSDL)Websphere Message Broker SOAP 请求节点以网关模式调用 .NET Web 服务(无 WSDL)
【发布时间】:2017-05-27 03:19:32
【问题描述】:

我已经为这个问题苦苦挣扎了一段时间,所有的搜索结果(我读过的很多)似乎都不适用于我的情况。

我有一个带有子流的 Websphere Message Broker 消息流,该子流调用在 Visual Studio 中编写的 Web 服务。我正在尝试在网关模式下调用此 Web 服务,这意味着我没有 WSDL 可以插入我用来编写此流程的代理工具包中的 SOAP 请求节点的属性中。

我收到的错误消息很常见:

由于 EndpointDispatcher 的 ContractFilter 不匹配,接收方无法处理带有 Action SendEmail 的消息。这可能是因为合约不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。

我不确定如何进行此操作。由于网关模式,许多属性在 SOAP 请求节点的属性中是不可配置的。我可以在 ESQL 代码中设置这些,也许在 HTTPRequestHeader 之类的消息中?

我正在使用 Websphere 8,Broker Toolkit 7.5。消息的传输是 HTTP,不使用 SSL。 WS-Addressing 也没有被使用。

欢迎提出任何建议。

【问题讨论】:

    标签: soap ibm-mq webservice-client ibm-integration-bus extended-sql


    【解决方案1】:

    是的,在网关模式下,您不需要 WSDL。您的目标 Web 服务需要如下所示的其他信息。

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

    尝试如上所述设置本地环境目标。动作可以根据你得到的WSDL文件来设置。

    如何搜索action:首先使用provider url:

    http://URL?WSDL
    

    然后搜索操作词。您可以看到如下所示的请求操作。

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

    所以就SET Action = 'http//ActionURL.bla.bla.bla'

    【讨论】:

      猜你喜欢
      • 2010-11-23
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      相关资源
      最近更新 更多