我尝试修改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>");
答案 0 :(得分:0)
将新主体设置为IN消息不会删除标题。
exchange.getOut().setBody()
将移除上一个标头并设置新主体,exchange.getIn().setBody()
将保留标头值并设置新主体
使用getIn()
修改现有标头。