在NodeJS http中发送HTTP POST数据

时间:2013-09-17 14:37:13

标签: javascript node.js

我正在尝试发送POST请求。这不是使用网络表单,原始它应该是这样的。

POST /echo HTTP/1.1
Host: dpsw.info
Connection: keep-alive
Transfer-Encoding: chunked

One
Two

使用NodeJS http,这个脚本..

var options = {
  hostname: 'dpsw.info',
  port: 80,
  path: '/echo',
  method: 'POST'
};

var req = require('http').request(options, function(res) {
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

// write data to request body
req.write('One\nTwo');
req.end();

然而,当在嗅探器中查看时,数据看起来像这样..

POST /echo HTTP/1.1
Host: dpsw.info
Connection: keep-alive
Transfer-Encoding: chunked

7
One
Two
0

我有时也使用Request模块,但没有看到一种简单的方法来放入原始数据 - 只有形式:{}

1 个答案:

答案 0 :(得分:2)

来自docs

  

发送'Content-length'标头将禁用默认的分块编码。

由于您显然不想chunked transfer encoding,因为这是其他数字的来源,您必须自己设置Content-length。但是,许多(大多数)服务器都会理解分块传输编码。