тело удаляется при обработке запроса http методом POST и приложением типа контента / x- www-form-urlencoded - PullRequest
0 голосов
/ 13 апреля 2020

Я использую 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);

спасибо за вашу помощь.

...