2013-04-24 22 views
25

Volevo sapere, come passare la richiesta JSON nel payload, per esempio: {'name' : 'test', 'value' : 'test'}:Come devo passare i dati JSON nella richiesta payload di richiesta HTTP Post

var post_data = {}; 

    var post_options = { 
     host: this._host, 
     path: path, 
     method: 'POST', 
     headers: { 
     Cookie : "session=" + session, 
      'Content-Type': 'application/json', 
      'Content-Length': post_data.length, 
     } 
    }; 

    // Set up the request 
    var post_req = http.request(post_options, function(res) { 
     res.setEncoding('utf8'); 
     res.on('data', function (chunk) { 
      console.log('========Response========: ' + chunk); 
     }); 
    }); 

    // post the data 
    post_req.write(post_data); 
    post_req.end(); 

Grazie per gli aiuti. Prats

+0

Questo risponde alla tua domanda? http://stackoverflow.com/questions/4505809/how-to-post-to-a-request-using-node-js – exclsr

risposta

69

Utilizza il modulo request

npm install -S request

var request = require('request') 

var postData = { 
    name: 'test', 
    value: 'test' 
} 

var url = 'https://www.example.com' 
var options = { 
    method: 'post', 
    body: postData, 
    json: true, 
    url: url 
} 
request(options, function (err, res, body) { 
    if (err) { 
    console.error('error posting json: ', err) 
    throw err 
    } 
    var headers = res.headers 
    var statusCode = res.statusCode 
    console.log('headers: ', headers) 
    console.log('statusCode: ', statusCode) 
    console.log('body: ', body) 
}) 
+2

Mi piacerebbe verificare qualcosa con voi qui. 'Body: postData' è corretto o dovrebbe essere postdata come stringa, come in 'body: JSON.stringify (postData); ? grazie. – Ric

+0

@Noah come cambia questo se voglio usare 'request.post (...)'? La maggior parte delle richieste che l'applicazione client (un'app Electron) invierà contiene corpi basati su JSON, con l'unica eccezione di corpi multipart. Stavo avendo problemi con il modo giusto di usare questa libreria e le impostazioni di 'bodyParser' nell'applicazione Express (lato server). Uso 'app.use (bodyParser.json())' e 'app.use (bodyParser.urlencoded ({extended: true}));' e le richieste non sono state analizzate fino a quando ho cambiato 'extended' su false. Non so come questo sia rilevante per le richieste JSON, che è la causa della mia confusione. –

+0

pro solution thank you –

1

solo convertire in una stringa e inviare.

post_req.write(JSON.stringify(post_data)); 
0

Ho provato questo e sembra essere working.I necessaria autenticazione di base in modo ho incluso autenticazione, se non ne hai bisogno si può scartare.

var value = {email:"",name:""}; 

var options = { 
     url: 'http://localhost:8080/doc/', 
     auth: { 
      user: username, 
      password: password 
     }, 
     method :"POST", 
     json : value, 

    }; 

    request(options, function (err, res, body) { 
     if (err) { 
      console.dir(err) 
      return 
     } 
     console.dir('headers', res.headers) 
     console.dir('status code', res.statusCode) 
     console.dir(body) 
    });