我必须在服务器端向我的soap请求添加标头(因为我不了解我的客户)。
为此,我通过扩展org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor
像这样:
public class HttpHeaderInterceptor extends AbstractSoapInterceptor {
public HttpHeaderInterceptor() {
super(Phase.PREPARE_SEND);
System.out.println("Intercept http SOAP ws");
}
@Override
public void handleMessage(SoapMessage soapMessage) throws Fault {
Map<String, List> headers = (Map<String, List>) soapMessage.get(Message.PROTOCOL_HEADERS);
System.out.println("-----> headers before"+ headers.toString());
try {
headers.put("uri_bu", Arrays.asList("krmx69/fr/proxyServlet/"));
soapMessage.put(Message.PROTOCOL_HEADERS, headers);
System.out.println("------> headers after"+ headers.toString());
} catch (Exception ce) {
throw new Fault(ce);
}
}
}
我的问题是:哪个cxf阶段让我在执行之前拦截了soap请求,因为我尝试了很多,但结果相同:
============================> call request
====================================> Intercept the request
谢谢:)