POST-Daten mit Anforderungsmodul auf Node.JS


136

Dieses Modul ist 'Anfrage https://github.com/mikeal/request

Ich denke, ich verfolge jeden Schritt, aber mir fehlt ein Argument.

var request = require('request');
request.post({
        url: 'http://localhost/test2.php',
         body: "mes=heydude"
         }, function(error, response, body){
            console.log(body);
    });

am anderen ende habe ich

echo $_POST['mes'];

Und ich weiß, dass der PHP nicht falsch ist ...


Warum nicht http.requestdirekt verwenden? Ich habe das Gefühl, dass der Körper solchen Querystring-Parametern nicht zugeordnet ist. Versuchen Sieurl: 'http://localhost/test2.php?mes=heydude'
Raynos

Antworten:


199

EDIT: Sie sollten Needle überprüfen . Es erledigt dies für Sie und unterstützt mehrteilige Daten und vieles mehr.

Ich fand heraus, dass mir ein Header fehlte

var request = require('request');
request.post({
  headers: {'content-type' : 'application/x-www-form-urlencoded'},
  url:     'http://localhost/test2.php',
  body:    "mes=heydude"
}, function(error, response, body){
  console.log(body);
});

6
Denken Sie an JSON.stringifyIhre Daten, wenn Sie senden'content-type': 'application/json'
Derek Soike

77

Bei Verwendung requestfür einen http-POST können Sie folgende Parameter hinzufügen:

var request = require('request');
request.post({
  url:     'http://localhost/test2.php',
  form:    { mes: "heydude" }
}, function(error, response, body){
  console.log(body);
});

42

Ich musste Schlüsselwertpaare ohne Formular posten und konnte dies einfach wie folgt tun:

var request = require('request');

request({
  url: 'http://localhost/test2.php',
  method: 'POST',
  json: {mes: 'heydude'}
}, function(error, response, body){
  console.log(body);
});

36

Wenn Sie einen JSON-Body veröffentlichen, verwenden Sie den formParameter nicht. Mit formwerden die Arrays in machen field[0].attribute, field[1].attributeusw. Stattdessen benutzen bodywie so.

var jsonDataObj = {'mes': 'hey dude', 'yo': ['im here', 'and here']};
request.post({
    url: 'https://api.site.com',
    body: jsonDataObj,
    json: true
  }, function(error, response, body){
  console.log(body);
});

"jsonDataObj" muss stringifiziert werden (JSON.stringify (...)), sonst stürzt es ab
Doctor

Eigentlich stürzt meine ab, wenn Sie es stringifizieren. Dies hängt wahrscheinlich davon ab, wie der empfangende Server eingerichtet ist.
Andrew

1
Danke für deine Antwort. Wo finde ich das Dokument dafür? Da ich an der Post-Methode gezweifelt habe, reicht das Dokument in Github nicht aus, um dieses Problem zu beheben.
Himmel

16
var request = require('request');
request.post('http://localhost/test2.php', 
    {form:{ mes: "heydude" }}, 
    function(error, response, body){
        console.log(body);
});

11
  1. Installieren Sie das Anforderungsmodul mit npm install request

  2. In Code:

    var request = require('request');
    var data = '{ "request" : "msg", "data:" {"key1":' + Var1 + ', "key2":' + Var2 + '}}';
    var json_obj = JSON.parse(data);
    request.post({
        headers: {'content-type': 'application/json'},
        url: 'http://localhost/PhpPage.php',
        form: json_obj
    }, function(error, response, body){
      console.log(body)
    });
    

Abgesehen von den Fehlern in der JSON-Zeichenfolge hat diese den Trick für mich getan! Beachten Sie, dass dem Abschnitt "Formular" ein Objekt übergeben wurde, sodass Sie zunächst alles darin als Objekt definieren und diese Vorbereitungsarbeit nicht
ausführen können

0

Ich muss die Daten von einer POSTMethode des PHPCodes erhalten. Was für mich funktioniert hat war:

const querystring = require('querystring');
const request = require('request');

const link = 'http://your-website-link.com/sample.php';
let params = { 'A': 'a', 'B': 'b' };

params = querystring.stringify(params); // changing into querystring eg 'A=a&B=b'

request.post({
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, // important to interect with PHP
  url: link,
  body: params,
}, function(error, response, body){
  console.log(body);
});

-2

Ich empfehle Axios https://www.npmjs.com/package/axios, es mit npm oder Garn zu installieren

const axios = require('axios');

axios.get('http://your_server/your_script.php')
    .then( response => {
    console.log('Respuesta', response.data);
    })
    .catch( response => {
        console.log('Error', response);
    })
    .finally( () => {
        console.log('Finalmente...');
    });
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.