2012-11-29 4 views
1

En cours de construction d'une application dans node.js. J'essaie de faire une requête HTTP côté serveur à un script ASP et de renvoyer les résultats.Node.js Requête HTTP côté serveur pour le script ASP

Si je navigue vers l'URL dans mon navigateur, tout va bien. Les données sont retournées. Cependant, quand je le fais dans node.js en utilisant restler, ou tout autre module d'ailleurs. Je n'ai rien en retour ...... JUSQU'A ajouter le cookie ASP.NET_SessionId à l'en-tête de la requête. J'ai copié ce cookie du GET successul de mon navigateur.

Comment puis-je obtenir/définir ce cookie de session côté serveur dans node.js?

Utilisation de l'infrastructure express. Code ci-dessous.

app.js

/** 
* Module dependencies. 
*/ 

var express = require('express') 
    , routes = require('./routes') 
    , user = require('./routes/user') 
    , http = require('http') 
    , path = require('path'); 

var app = express(); 

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.cookieParser('cat')); 
    app.use(express.session()); 
    app.use(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler()); 
}); 

app.get('/', routes.index); 
app.get('/users', user.list); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

index.js itinéraire

/* 
* GET home page. 
*/ 

exports.index = function(req, res){ 

    var http = require("http"), 
    sys = require('util'), 
    rest = require('restler'); 

    rest.get('http://192.168.154.134/dca/stream/StreamDown.asp?' + 
     'Action=GetRepositoryConnections' , {headers:{ 
     'Cookie':'ASP.NET_SessionId=jj1jx255wlkwib45gq0d3555;' + 
     ' ASPSESSIONIDASDDSBQR=ACABCJNDIIONGGMPGAOMMJJD;' + 
     ' ASPSESSIONIDCQQRQDQR=BAIBCEODMMKAPJAOLLMMDNEJ;' + 
     ' ASPSESSIONIDAQSTRAQR=KMLDIOODECFNBKPGINLLNBKC;' + 
     ' ASPSESSIONIDASQQQDQR=OKGBKCPDHDIKAJNOGFKACCCG'} 

    }).on('complete', function(result) { 

     if (result instanceof Error) { 
      sys.puts('Error: ' + result.message); 
      this.retry(5000); // try again after 5 sec 
     } else { 
      sys.puts(result); 
     } 
    }); 

    res.render('index', { title: 'Express' }); 

}; 
+0

Cette page ASP nécessite-t-elle une authentification? – Neps

+0

Aucune authentification requise. –

Répondre

0

Essayez request. Il a un "cookie jar" donc il se souviendra des cookies pour vous.

+0

Comment faire pour obtenir ce cookie de session du serveur pour la première demande mais pour le stocker? C'est là que je me bats. –

+0

Peut-être que vous devriez simplement faire une demande initiale à la page d'accueil et cela devrait vous donner un cookie. – Max

Questions connexes