Как авторизоваться с помощью Apache Camel? - PullRequest
1 голос
/ 13 июля 2011

Я должен сделать запрос POST

curl -X POST --data-binary @auth.json http://somehost.com/auth
{
    "response": {
        "status": "OK",
        "token": "622cee5f8c99c81e87614e9efc63eddb"
    }
}

, и это вернет ответ JSON с токеном.auth.json - это файл JSON с логином и паролем.Затем у меня есть два варианта: поместить токен в заголовок в будущих запросах как «Авторизация: TOKEN», или поместить его в файл cookie и выполнить другие запросы.Как я могу сделать это с Apache Camel?Как я могу получить ответ HTTP?Где я могу поставить токен?Теперь у меня есть:

public static void main(String args[]) throws Exception {
    CamelContext context = new DefaultCamelContext();
    context.addRoutes(new RouteBuilder() {
        public void configure() {
            from("file:data/inbox?noop=true")
            .to("http://somehost.com/auth");
        }
    });
    context.start();
    Thread.sleep(10000);
    context.stop(); 

} и у меня есть файл auth.json в ./data/inbox

1 Ответ

3 голосов
/ 16 июля 2011

Поскольку вы разместили тот же вопрос в списке рассылки Apache Camel, я предоставил ответ там.

Подводя итог: просто наберите setHeader("Authorization", constant("622cee5f8c99c81e87614e9efc63eddb")) на своем маршруте перед отправкой http запроса. Camel автоматически переведет этот заголовок в заголовок, относящийся к транспорту (в данном случае HTTP). Конечно, вам не нужно предоставлять постоянный токен в вашем маршруте, вы можете динамически вычислять или искать токен с помощью выражения Camel или процессора.

Ваш полный маршрут будет выглядеть примерно так:

context.addRoutes(new RouteBuilder() { 
    public void configure() { 
            from("file:data/out?fileName=filename.json&noop=true") 
            .setHeader("Authorization", constant("mytoken")) 
            .to("http://somehost.com/auth"); 
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...