我正在使用CXF / JAXB从wsdl
自动生成java类。
所有生成的请求extend BaseRequest
,可以获取soap auth所需的用户凭据:
CityRequest req = new CityRequest();
req.setUsername("admin");
req.setPassword("test");
req.setPostalCode("1234");
new WsService().getCityPort().getTown(req);
现在我想以某种方式“拦截”传出的请求,并自动添加所需的凭据。所以在我的客户端实现中,我不必关心设置身份验证的东西。可以使用CXF
吗?
然后凭据不是header
,而是正常的xml字段。
答案 0 :(得分:1)
只要在对象在MARSHAL阶段编组之前执行,就可以使用CXF拦截器。你应该能够在那之前选择任何阶段。请参阅CXF Interceptors文档中的完整列表。
在Interceptor中,您可以使用以下代码找到您的传出对象:
@Override
public void handleMessage(Message message) throws Fault {
List mcl = message.getContent(List.class);
if (mcl != null) {
for (Object o : mcl) {
if (o instanceof BaseRequest) {
BaseRequest baseRequest = (BaseRequest) o;
}
}
}
}