从响应中读取自定义 header 值

Read custom header value from the response

当我从原始响应选项卡下的 Soap UI 发送请求时,我看到以下结果(查找附件)。现在在 AOP 控制器中,我想读取这个标记为红色的 header 值。怎么可能?提前致谢。

在我发送 soap 请求的应用程序中,我有 WebServiceTemplate。我在此 Web 服务模板上应用了自定义拦截器 WebServiceInterceptor(实现了 ClientInterceptor 接口)。在注入 MessageContext 的覆盖 afterCompletion 方法中,我能够从 SaajMessageHeader.

中获取此 属性

代码如下所示:

@Configuration
public class MyWebServiceConfig {
    
    @Bean(name = "myWSClient")
    public WebServiceTemplate myWSClient() throws Exception {
        WebServiceTemplate template = new WebServiceTemplate();
        
        ...

        WebServiceInterceptor[] interceptors = { new WebServiceInterceptor() };
        template.setInterceptors(interceptors);
        return template;
    }
    
    
    private static class WebServiceInterceptor implements ClientInterceptor {

        @Override
        public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
            ...
            return true;
        }

        @Override
        public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException {
            return true;
        }

        @Override
        public boolean handleFault(MessageContext messageContext) throws WebServiceClientException {
            return true;
        }

        @Override
        public void afterCompletion(MessageContext messageContext, Exception ex) throws WebServiceClientException {
            try {
                SaajSoapMessage message = (SaajSoapMessage) messageContext.getResponse();

                String []traceId = message.getSaajMessage().getMimeHeaders().getHeader("ITRACING_TRACE_ID");
                    if(traceId != null && traceId.length > 0){
                        process.setTraceId(traceId[0]);
                    }
            } catch (Exception e) {
            }

        }
    
}