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


137

此模块是“请求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直接使用?我感觉身体没有映射到像这样的querystring参数。试试看url: 'http://localhost/test2.php?mes=heydude'
Raynos 2011年

Answers:


200

编辑:您应该签出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);
});

6
请记住,JSON.stringify您的数据如果您要发送'content-type': 'application/json'
德里克Soike

77

当使用request一个HTTP POST,您可以添加参数是这样的:

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

42

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

var request = require('request');

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

36

如果要发布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(...))否则会崩溃
医生

如果将其归类,实际上是我的崩溃。这可能取决于接收服务器的设置方式。
安德鲁(Andrew)

1
感谢您的回答。在哪里可以找到此文档?由于我怀疑post方法,但是Github中的文档不足以解决此问题。
天空

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

11
  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字符串中的错误外,这个还帮了我大忙!请注意,“表单”部分已将一个对象传递给它,因此您可以将其中的所有内容都定义为对象的开头,而无需进行准备工作
rgbflawed

0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.