2013-04-24 3 views
25

ich wissen wollte, wie die json Anforderung in der Nutzlast passieren, für zB: {'name' : 'test', 'value' : 'test'}:Wie soll ich json Daten in der Anfrage-Payload von HTTP POST-Anforderung übergeben

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(); 

Vielen Dank für das hilft. Prats

+0

Beantwortet das Ihre Frage? http://stackoverflow.com/questions/4505809/how-to-post-to-a-request-using-node-js – exclsr

Antwort

69

Verwenden Sie das request Modul

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

Ich möchte hier etwas mit Ihnen überprüfen. Ist 'body: postData' korrekt oder sollte postData wie in 'body: JSON.stringify (postData); ? Danke. – Ric

+0

@Noah Wie ändert sich das, wenn ich 'request.post (...)' benutzen will? Die meisten Anfragen, die die Client-Anwendung (eine Electron-App) senden wird, enthält JSON-basierte Körper, mit der einzigen Ausnahme, die mehrteilige Körper sind. Ich hatte Probleme damit, den richtigen Weg zu finden, um diese Bibliothek und die 'bodyParser'-Einstellungen in der Express (serverseitigen) Anwendung zu verwenden. Ich benutze 'app.use (bodyParser.json())' und 'app.use (bodyParser.urlencoded ({extended: true}));' und Anfragen konnten nicht analysiert werden, bis ich 'extended' in false änderte. Nicht sicher, wie dies für JSON-Anforderungen relevant ist, was die Ursache meiner Verwirrung ist. –

+0

pro Lösung danke –

1

nur in einen String konvertieren und senden.

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

Ich habe versucht, diese und es scheint working.I benötigt grundlegende auth zu sein, damit ich Auth enthalten haben, wenn Sie es nicht brauchen Sie es verwerfen kann.

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) 
    });