我在nodejs中进行Rest调用以从JasperSoft Server获取报告。 和 我需要一个cookie才能保持连接,但我不知道怎么做才能得到它
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 /报道 我需要cookie才能做到这一点。我该怎么做才能得到它?
对于你的信息,console.log('HEADERS:'+ JSON.stringify(res.headers)); 显示cookie和路径以及其他一些东西,所以也许我只需要解析它并从那里获取cookie但我不知道该怎么做。
此外,正如我所说,我希望在连接后转到另一个链接,所以你还可以帮我设置另一个链接的cookie吗?
答案 0 :(得分:7)
使用Mikeal Rogers' request module。它具有内置的cookie处理,跟随重定向和其他好东西。它也比http.request
更简单。您的cookie应该在登录后才能正常工作。
更新:示例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);
});
});