#apache-camel #httpresponse #jbossfuse #bad-request #cxfrs
#apache-camel #httpresponse #jbossfuse #неверный запрос #cxfrs
Вопрос:
Ниже приведен фрагмент кода для использования конечной точки api. Для 200 http-ответов объект exchange содержит полученную полезную нагрузку. Но для ответа 400 полученная полезная нагрузка не задана в объекте exchange. Чего-нибудь не хватает в приведенном ниже коде?
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();
Ответ №1:
getOut()
создает пустое выходное сообщение. Вам нужно использовать getIn()
или getMessage()
.
SearchResponse searchResponse = (SearchResponse) exchange.getIn().getBody();
Комментарии:
1. Спасибо! Но ..exchange.getIn().getBody() выдает отправляемое тело запроса, а не тело ответа. Для 200 ответов exchange.getOut().getBody() имеет тело ответа, но не для 400
2. в таком случае, не могли бы вы зарегистрировать все свойства и заголовки для обмена out и проверить, что зарегистрировано для ответа 400?