骆驼修改肥皂头

时间:2016-06-17 08:18:35

标签: soap header apache-camel

我尝试修改camel消息中的soap标头。当且仅当我不接触消息正文时,我才能修改soap标题。如果我为邮件设置了新主体,则会删除所有soap标头。这是我使用的代码。我还尝试将body和soap标头设置为out消息,结果相同。取消注释setDirection部分也没有任何效果。

Message in = exchange.getIn();
if (in.getHeader(Header.HEADER_LIST) == null) {
    in.setHeader(Header.HEADER_LIST, new ArrayList<SoapHeader>());
}

List<SoapHeader> headers = CastUtils.cast((List<?>)in.getHeader(Header.HEADER_LIST));

Pagination pagination = new Pagination();

SoapHeader newHeader = new SoapHeader(new QName("http://de.company.local", "local"), "newHaeder", new JAXBDataBinding(String.class));
SoapHeader pageinationHeader = new SoapHeader(new QName("http://de.company.local", "pagination"), pagination, new JAXBDataBinding(Pagination.class));

//newHeader.setDirection(Direction.DIRECTION_OUT);
headers.clear();
headers.add(newHeader);
headers.add(pageinationHeader);

//exchange.getOut().setHeader("org.apache.cxf.headers.Header.list", headers);
exchange.getIn().setBody("<newContent>test</newContent>");

1 个答案:

答案 0 :(得分:0)

将新主体设置为IN消息不会删除标题。

exchange.getOut().setBody()将移除上一个标头并设置新主体,exchange.getIn().setBody()将保留标头值并设置新主体

使用getIn()修改现有标头。