javascript - Node 中的 request.post 抛出 { code : undefined, Reason: 'Argument error, options.body.' }

标签 javascript node.js request

我在尝试执行 request.post 时收到以下错误。这很令人困惑,因为它似乎首先引用了我的选项的 body ,但随后提示第一个参数应该是字符串或缓冲区。

{ 代码:未定义,原因:'参数错误,options.body。' } 卫生部! _http_outgoing.js:454 throw new TypeError('第一个参数必须是字符串或缓冲区'); ^ 类型错误:第一个参数必须是字符串或缓冲区

我尝试将 url 值更改为字符串,但这并不能解决问题。

这是我的代码的样子。正如您所看到的,我已经注销了 reqOptions 并验证了该 url 确实已传递给 request.post,所以我不确定问题是什么。为任何帮助干杯!

var reqOptions = {
    url: options.host, 
    body: formData,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  };
  console.log('CHECK OPTIONS :: ', reqOptions); 
  request.post(reqOptions, function (err, resp) {...}

最佳答案

如果 formData 是一个对象,您可能需要使用 requestform: option而不是body:。这将字符串化对象并设置 Content-Type header 。

var reqOptions = {
  url: options.host, 
  form: formData
};
console.log('CHECK OPTIONS :: ', reqOptions);
request.post(reqOptions, function (err, resp) {...});
<小时/>

body: 选项需要一个字符串、Buffer 或 ReadStream 值。如果不使用 form:,您就必须自己对对象进行字符串化。

var qs = require('querystring');

var reqOptions = {
  url: options.host, 
  form: qs.stringify(formData),
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
};

关于javascript - Node 中的 request.post 抛出 { code : undefined, Reason: 'Argument error, options.body.' },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594055/

相关文章:

当使用 server.on 检测到 post 请求时,Node.js 返回无法读取属性禁用未定义

Javascript |检查是否已打开具有特定 URL 的窗口

Javascript 导出类或对象

javascript - 在 Node JS 中使用 push 或 concat 时,同一项目在数组中添加多次

node.js - 在循环中请求 JSON

python - 如何从kayak.com上抓取给定区域的酒店最低价格?

ios - Swift - 取消同步请求?

javascript - 从外部脚本手动调用脚本标签 onerror

javascript - AngularJS在上传时预览多个图像

node.js - 手写笔不再工作了