首页 文章

在Node.JS上使用请求模块POST数据

提问于
浏览
96

这个模块是'request https://github.com/mikeal/request

我想我正在遵循每一步,但我错过了一个论点..

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

在另一端我有

echo $_POST['mes'];

我知道php没有错...

6 回答

  • 68
    var request = require('request');
    request.post('http://localhost/test2.php', 
        {form:{ mes: "heydude" }}, 
        function(error, response, body){
            console.log(body);
    });
    
  • 153
    • 安装请求模块,使用 npm install request

    • 在代码中:

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

    EDIT: 你应该看看Needle . 它为您完成此操作并支持多部分数据等等 .

    我发现我错过了一个 Headers

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

    request 用于http POST时,您可以通过以下方式添加参数:

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

    我不得不发布没有形式的键值对,我可以像下面这样轻松地做到:

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

    好读:http://blog.modulus.io/node.js-tutorial-how-to-use-request-module

  • 9

    如果您要发布json正文,请不要使用 form 参数 . 使用 form 将使数组成为 field[0].attributefield[1].attribute 等 . 而是像这样使用 body .

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

相关问题