【问题标题】:Custom Header not added through apache cxf OutInterceptor with spring自定义标头未通过 apache cxf OutInterceptor 和 spring 添加
【发布时间】:2014-11-17 22:35:05
【问题描述】:

我整天都在努力使用 spring 应用程序上下文和 apache cxf 和 spring 进行自定义 SOAP 请求。

我的拦截器类如下所示

public class HttpHeaderInterceptor extends AbstractPhaseInterceptor<Message> {

     public HttpHeaderInterceptor() {
    super(Phase.SETUP);
}


@Override
public void handleMessage(Message message) throws Fault {
       Map<String, List<String>> ietHeaders = new HashMap<String,List<String>>();
       List<String> headerItems = new LinkedList<>();

       ietHeaders.put("CustomHeader", Arrays.<String>asList("myheader"));
       message.put(Message.PROTOCOL_HEADERS, ietHeaders);
    }
}

当我与Charlesproxy 核对时,这只是正常的请求。我确定我做错了什么。在调试时,我可以进入 handleMessage 方法,但没有任何改变。其余代码片段可在pastie.org上找到

谁能指出疏忽之处?

谢谢

【问题讨论】:

    标签: spring cxf soap-client interceptor


    【解决方案1】:

    将拦截器更改为SoapPreProtocolOutInterceptor。详情请参考link

    因此修改类如下。

    public class HttpHeaderInterceptor extends SoapPreProtocolOutInterceptor {
    
    
        public void handleMessage(SoapMessage message) throws Fault {
    
            Map<String, List<String>> ietHeaders = new HashMap<String, List<String>>();
            List<String> headerItems = new LinkedList<String>();
            headerItems.add("h1");
            headerItems.add("h2");
            headerItems.add("h3");
    
            ietHeaders.put("CustomHeader", headerItems);
            message.put(Message.PROTOCOL_HEADERS, ietHeaders);
    
    
    
        }
    
    }
    

    修改你的 cxf-bean.xml 以包含拦截器

    <jaxws:outInterceptors>
            <bean class="com.kp.swasthik.soap.interceptor.HttpHeaderInterceptor" />
    </jaxws:outInterceptors>
    

    输出如下。

    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    CustomHeader: h1,h2,h3
    Content-Type: text/xml;charset=UTF-8
    Transfer-Encoding: chunked
    Date: Tue, 12 Aug 2014 11:17:57 GMT
    

    【讨论】:

    • 你的意思是 outInterceptors 应该有 bean 类 com.whatever.my.package.HttpHeaderInterceptor 而不是。我正在重新考虑你的建议。抱歉,我花了这么长时间才回来
    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2019-01-04
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多