2012-03-02 2 views
0

Я делаю вызов Rest в nodejs для получения отчета с сервера JasperSoft. И мне нужно, чтобы получить печенье, чтобы оставаться на связи, но я не знаю, как сделать это получитьПолучить cookie с nodejs

var http = require('http'); 
var options = { 
    host: '127.0.0.1', 
    port: 8080, 
    path: '/jasperserver/rest/login?j_username=jasperadmin&j_password=jasperadmin', 
    method: 'POST' 
}; 

http.request(options, function(res) { 

    console.log('STATUS: ' + res.statusCode); 
    console.log('HEADERS: ' + JSON.stringify(res.headers)); 

    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    console.log('BODY: ' + chunk); 

    }); 
}).end(); 

Так это работает, но я хочу, чтобы иметь доступ ко другой ссылке как : локальный: 8080/jasperserver/ressource/reports И для этого мне нужен файл cookie. Как я могу это сделать?

Для информации, console.log ('HEADERS:' + JSON.stringify (res.headers)); Показать куки и путь и некоторые другие вещи, так что, возможно, мне просто нужно разобрать его и получить cookie оттуда, но я не знаю, как это сделать.

Кроме того, как я уже сказал, я хочу перейти на другую ссылку после подключения, так что вы также можете помочь мне установить cookie для другой ссылки?

+0

возможно дубликат [Получить и установить единый Cookie с Node.js HTTP Server] (HTTP: //stackoverflow.com/questions/3393854/get-and-set-a-single-cookie-with-node-js-http-server) – maerics

+0

Хорошая работа Луи, это соответствует тому, что я имел в виду, когда я предлагал, чтобы вы запускаете свой сервер Jasper параллельно по узловому приложению! Я желаю вашего успеха. :-) –

+0

Спасибо, Линус! maerics Я попробовал, чтобы он просто вернулся и Object # {} Объект – Louis

ответ

7

Изучите использование Mikeal Rogers' request module. Он имеет встроенную обработку файлов cookie, следует переадресации и других полезных свойств. Это также немного более простой API, чем http.request. Ваши куки должны просто работать после входа в

Обновление:. Образец с request (npm install request):

var request = require("request"); 

request.post({url: "http://localhost:8080/jasperserver/rest/login", qs: {j_username: "jasperadmin", j_password: "jasperadmin"}}, function(err, res, body) { 
    if(err) { 
     return console.error(err); 
    } 

    request.get("http://localhost:8080/jasperserver/ressource/reports", function(err, res, body) { 
     if(err) { 
      return console.error(err); 
     } 

     console.log("Got a response!", res); 
     console.log("Response body:", body); 
    }); 
}); 
+0

Спасибо за образец! – Louis

+0

Спасибо! Это действительно помогло мне. – teggy

+0

Спасибо! Действительно помог мне :) – TimTastic