Как сделать вызов RESTful, используя аутентификацию Basi c в apache верблюде? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть apache верблюжье приложение, которое требует отправки файлов журнала на конечную точку, а для этого требуется Basi c Аутентификация. Я смог передать authMethod, authusername и authPassword в URL, как указано в документации верблюда, но у меня возникла проблема в том, что я получаю нулевой ответ от конечной точки после запуска приложения. Однако та же самая конечная точка возвращает код ответа и тело ответа, используя почтальон.

Ниже мой код:

from("{{routes.feeds.working.directory}}?idempotent=true")
                .process(new Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                    MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
                    multipartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
                    String fileName = exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
                    File file = exchange.getIn().getBody(File.class);
                    multipartEntityBuilder.addPart("file",
                            new FileBody(file, ContentType.MULTIPART_FORM_DATA, fileName));
                    exchange.getOut().setBody(multipartEntityBuilder.build());
                    Message out = exchange.getOut();
                    int responseCode = out.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
                    log.info("response code "+responseCode);

            }
        })
                .setHeader(Exchange.HTTP_QUERY, 
            constant("authMethod=Basic&authUsername="+username+"&authPassword="+password+""))
                .to(TARGET_WITH_AUTH +"/"+uuid+"/files")
                .log(LoggingLevel.DEBUG, "response code >>>>"+Exchange.HTTP_RESPONSE_CODE)
                .log(LoggingLevel.INFO, "RESPONSE BODY ${body}")
                .end();

Пожалуйста, помогите рассмотреть и дать дополнительные советы

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Это было исправлено с помощью httpClient для отправки моих запросов с аутентификацией Basi c. По-видимому, authMethod в apache верблюде не отправляет учетные данные вместе с почтовым запросом, и именно поэтому я получаю исходный код ответа 401. Спасибо всем за ваш вклад.

0 голосов
/ 19 февраля 2020

Для аутентификации по основам HTTP c Я использую это перед отправкой запроса

<setHeader headerName="Authorization">
    <constant>Basic cm9vdDpyb290</constant>
</setHeader>

cm9vdDpyb290 - Кодированный Base64 root: root (имя пользователя и пароль) строка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...