Я использую Camel 2.24 в приложении Java Spring-boot. Я наблюдаю, что обработка запроса http с помощью метода POST и приложения типа контента / x- www-form-urlencoded приводит к тому, что тело IN удаляется, а параметры формы перемещаются в заголовок сообщения. Так как же я могу перенаправить на другую конечную точку http, ожидающую POST и application / x- www-form-urlencoded, не воссоздавая тело самостоятельно? Вот код, который я реализовал в качестве обходного пути:
if (messageService.getHttpMethodHeader().equals("POST") && messageService.getHttpContentTypeHeader() != null
&& messageService.getHttpContentTypeHeader().startsWith(HttpConstants.CONTENT_TYPE_WWW_FORM_URLENCODED)) {
// get query parameters but only arcgis relevant ones to put later as querystring in the body
// TODO : get all query parameters from headers but do not put camel and "http" ones in the body
// in order to have all arcgis parameter not only ArcGISPostParameters
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
for (ArcGISPostParameters operation : ArcGISPostParameters.values()) {
String code = operation.getCode();
Object operationValue = messageService.getHeader(code);
if (operationValue != null) {
params.add(code, String.valueOf(operationValue));
}
}
// build query parameters to put in the body
UriComponents uriComponents = UriComponentsBuilder.newInstance().queryParams(params).build();
String body = uriComponents.getQuery();
messageService.setBody(body);
LOGGER.debug("new Body for applyEdits: {} with size {}", body, messageService.getBody().length);
спасибо за вашу помощь.