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

在Node.JS上使用请求模块发布数据,node.js,request,Node.js,Request,此模块是“请求”模块 我想我每一步都在做,但我错过了一个论点 var request = require('request'); request.post({ url: 'http://localhost/test2.php', body: "mes=heydude" }, function(error, response, body){ console.log(body); }); 在另一端,我有 echo

此模块是“请求”模块

我想我每一步都在做,但我错过了一个论点

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没有错…

编辑:您应该检查一下。它为您做到这一点,并支持多部分数据,以及更多

我发现我少了一个头球

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

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

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

我必须在没有表单的情况下发布键值对,我可以像下面这样轻松完成:

var request = require('request');

request({
  url: 'http://localhost/test2.php',
  method: 'POST',
  json: {mes: 'heydude'}
}, function(error, response, body){
  console.log(body);
});
  • 使用npm安装请求安装请求模块

  • 代码:

    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正文,请不要使用
    form
    参数。使用
    表单
    将使数组变成
    字段[0]。属性
    字段[1]。属性
    等。而不是像这样使用
    正文

    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);
    });
    
    我强烈建议axios将其与npm或纱线一起安装

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

    我必须从
    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);
    });
    

    为什么不直接使用http.request?我有一种感觉,身体没有映射到像这样的查询字符串参数。试试
    url:'http://localhost/test2.php?mes=heydude“
    除了json字符串中的错误之外,这一个还帮了我的忙!请注意,“form”部分有一个对象传递给它,因此您可以将其中的所有内容都定义为一个要开始的对象,而不必做准备工作“jsonDataObj”必须字符串化(JSON.stringify(…),否则它会崩溃如果您字符串化它,实际上会崩溃。这可能取决于接收服务器的设置方式。谢谢您的回答。我在哪里可以找到这个的文件?因为我怀疑post方法,但是Github中的文档还不足以解决这个问题。如果您发送的是
    'content-type':'application/JSON'
    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);
    });