问题描述
以下是使用api端点的代码段。对于200 http响应,交换对象包含收到的有效负载。但是对于400个响应,未在交换对象中设置接收到的有效负载。下面的代码中缺少什么吗?
Exchange exchange = serviceProducer.send(endPoint,new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setPattern(ExchangePattern.InOut);
Message inMessage = exchange.getIn();
inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API,Boolean.TRUE);
inMessage.setHeader(Exchange.CONTENT_TYPE,"application/json");
inMessage.setHeader(Exchange.HTTP_METHOD,"POST");
inMessage.setHeader(Exchange.HTTP_QUERY,"clientId=" + ClientId);
inMessage.setBody(request);
inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS,SearchResponse.class);
inMessage.setHeader(Exchange.CONTENT_TYPE,"application/json");
}
});
SearchResponse searchResponse = (SearchResponse) exchange.getout().getBody();
解决方法
getOut()
创建空白输出消息。您需要使用getIn()
或getMessage()
。
SearchResponse searchResponse = (SearchResponse) exchange.getIn().getBody();