【问题标题】:Identify a SOAP message as request or response将 SOAP 消息标识为请求或响应
【发布时间】:2013-05-16 22:57:16
【问题描述】:

我有一个可以接受 SOAP 请求并且可以发出 SOAP 请求的中间件。

我已经编写了自定义拦截器来拦截入站和出站请求以将它们记录到数据库中。

问题是当发出 SOAP 请求时,传入的请求被 InBound 拦截器拦截,而当我的模块发出 SOAP 请求时,它被 Outbound 拦截器拦截,这是正确的。

但我想将传入的 SOAP 消息识别为天气,它是 SOAP 请求或 SOAP 响应,以便我可以正确记录 SOAP 请求和响应。

有没有办法将 SOAP 消息识别为请求或响应?

【问题讨论】:

    标签: soap cxf interceptor


    【解决方案1】:

    您也可以使用 CXF MessageUtils 类来执行此操作。例如:

    boolean requestor = MessageUtils.isRequestor(message);
    boolean outbound = MessageUtils.isOutbound(message);
    if (requestor) {
        if (!outbound) {
            //This is your RESPONSE message
        }
    } else {
        if (!outbound) {
            //This is your REQUEST message
        }
    }
    

    【讨论】:

    • 太棒了,我一直在寻找这种解决方案,但没有得到任何解决方案,所以我依赖 Moles 提到的 Http 方法。
    【解决方案2】:

    如果 SOAP 调用的请求方法为 POST,则您始终可以获取标头并查找 TCP 标头

    【讨论】:

    • 我不确定,但它会一直是 POST 还是 GET 也可以
    • 您似乎是 WS 方面的专家,而我是网络服务的新手,您也可以看看 this
    • SOAP 总是 POST 消息,但会违反 WSDL
    • 所以我所做的是我现在依靠请求方法不为空来识别 SOAP 请求
    猜你喜欢
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多