SOAP out拦截器CXF

时间:2016-05-06 21:29:38

标签: java spring web-services cxf

在我们的应用程序中,我们需要与不同的第三方Web服务进行交互。在其中一个案例中,我们必须添加一个out拦截器来操纵请求标头和正文。我们使用的主要技术是Spring和CXF,配置使用XML(在spring环境中)。

是否有办法在仅向特定Web服务发出请求时限制拦截器调用。

public abstract class TransformSOAPMessageInterceptor extends AbstractPhaseInterceptor<Message> {

}

谢谢和问候, 圣

1 个答案:

答案 0 :(得分:1)

您可以检查邮件中的SOAPAction标头(下面显示的大部分示例都来自http://cxf.apache.org/docs/interceptors.html

if (message.getVersion() instanceof Soap11) {
            Map<String, List<String>> headers = CastUtils.cast((Map)message.get(Message.PROTOCOL_HEADERS));
            if (headers != null) {
                List<String> sa = headers.get("SOAPAction");
                if (sa != null && sa.size() > 0) {
                    String action = sa.get(0);
                    if (action.startsWith("\"")) {
                        action = action.substring(1, action.length() - 1);
                    }
                    if (StringUtils.equals(action, "YOUR_SPECIAL_ACTION" ) {
                        doYourSpecialProcessint(message, action);
                    }
                }
            }
        } else if (message.getVersion() instanceof Soap12) {
          ...........
        }