【问题标题】:POST data with request module on Node.JS在 Node.JS 上使用请求模块发布数据
【发布时间】:2011-06-21 22:17:55
【问题描述】:

这个模块是'请求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 没有错……

【问题讨论】:

  • 为什么不直接使用http.request呢?我有一种感觉身体没有映射到这样的查询字符串参数。试试url: 'http://localhost/test2.php?mes=heydude'

标签: node.js request


【解决方案1】:

编辑:您应该查看Needle。它为您执行此操作并支持多部分数据等等。

我发现我错过了一个标题

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

【讨论】:

  • 如果您要发送'content-type': 'application/json',请记住JSON.stringify您的数据
【解决方案2】:

当使用request 进行 http POST 时,您可以通过这种方式添加参数:

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

【讨论】:

    【解决方案3】:

    我必须发布没有表单的键值对,我可以像下面这样轻松地做到这一点:

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

    【讨论】:

      【解决方案4】:

      如果您要发布 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);
      });
      

      【讨论】:

      • "jsonDataObj" 必须被字符串化 (JSON.stringify(...)) 否则它会崩溃
      • 如果你把它串起来,实际上我的崩溃。这可能取决于接收服务器的设置方式。
      • 感谢您的回答。我在哪里可以找到这个文档?由于我怀疑 post 方法,但 Github 中的文档不足以解决此问题。
      【解决方案5】:
      var request = require('request');
      request.post('http://localhost/test2.php', 
          {form:{ mes: "heydude" }}, 
          function(error, response, body){
              console.log(body);
      });
      

      【讨论】:

        【解决方案6】:
        1. 安装请求模块,使用npm install request

        2. 在代码中:

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

        【讨论】:

        • 除了 json 字符串中的错误之外,这个对我有用!请注意,“表单”部分有一个传递给它的对象,因此您可以将其中的所有内容定义为开始的对象,而不做准备工作
        【解决方案7】:

        我必须从PHP 代码的POST 方法中获取数据。对我有用的是:

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

        【讨论】:

          【解决方案8】:

          我强烈推荐 axios https://www.npmjs.com/package/axios 使用 npm 或 yarn 安装它

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-26
            • 1970-01-01
            • 2012-09-12
            • 1970-01-01
            • 2018-05-04
            • 1970-01-01
            • 2014-07-29
            • 1970-01-01
            相关资源
            最近更新 更多