read nodejs node form example and javascript php node.js post express

javascript - form - read post params nodejs



POST a PHP desde Node.js (1)

Estoy intentando enviar algunos datos de una aplicación Node.js a un script PHP. Por el momento, solo estoy creando una prueba de concepto, pero no puedo transferir los datos al lado de PHP. La solicitud se procesa y recupero 200, pero PHP cree que la matriz $ _POST está vacía.

Aquí está mi código de nodo:

// simple end point just for testing exports.testPost = function(request, response) { data = request.body.data; postToPHP(data); response.end(data); } function postToPHP (data) { var http = require(''http''); var options = { host : ''localhost'', port : 8050, path : ''/machines/test/index.php'', method : ''POST'', headers : { ''Content-Type'' : ''application/json'', ''Content-Length'' : Buffer.byteLength(data) } }; var buffer = ""; var reqPost = http.request(options, function(res) { console.log("statusCode: ", res.statusCode); res.on(''data'', function(d) { console.info(''POST Result:/n''); //process.stdout.write(d); buffer = buffer+data; console.info(''/n/nPOST completed''); }); res.on(''end'', function() { console.log(buffer); }); }); console.log("before write: "+data); reqPost.write(data); reqPost.end(); }

Nuevamente, la solicitud llega a localhost: 8050 / machines / test / index.php pero cuando hago un var_dump de $ _POST es una matriz vacía.

[29-Jan-2014 21:12:44] array(0) { }

Sospecho que estoy haciendo algo mal con el método .write () pero no puedo entender qué. Cualquier comentario sobre lo que me falta o lo que hago incorrectamente sería muy apreciado.

* Actualización:

Como algunos de los comentarios indican usar file_get_contents (''php: // input''); funciona para obtener los datos en el lado de PHP, pero aún así preferiría poder acceder directamente al conjunto $ _POST.


Ya que está enviando los datos con Content-Type: application/json , necesitaría leer la entrada sin procesar ya que php no sabe cómo leer json en sus globales como _GET y _POST a menos que tenga alguna extensión de php que lo haga.

Puede usar la biblioteca querystring para analizar un objeto en una cadena de consulta de pares nombre-valor que podría transmitir con Content-Type:application/x-www-form-urlencoded para que los datos se analicen en los globales

var data = { var1:"something", var2:"something else" }; var querystring = require("querystring"); var qs = querystring.stringify(data); var qslength = qs.length; var options = { hostname: "example.com", port: 80, path: "some.php", method: ''POST'', headers:{ ''Content-Type'': ''application/x-www-form-urlencoded'', ''Content-Length'': qslength } }; var buffer = ""; var req = http.request(options, function(res) { res.on(''data'', function (chunk) { buffer+=chunk; }); res.on(''end'', function() { console.log(buffer); }); }); req.write(qs); req.end();