在Node.js中使用Pastebin API

时间:2012-07-07 09:12:19

标签: api http node.js pastebin

我一直试图在Node.js中将粘贴发布到Pastebin,但看起来我做错了。

我收到了错误的API请求,无效的api_option ,但我明确将 api_option 设置为粘贴,就像文档要求的那样对

var http = require('http');
var qs = require('qs');

var query = qs.stringify({
  api_option: 'paste',
  api_dev_key: 'xxxxxxxxxxxx',
  api_paste_code: 'Awesome paste content',
  api_paste_name: 'Awesome paste name',
  api_paste_private: 1,
  api_paste_expire_date: '1D'
});

var req = http.request({
  host: 'pastebin.com',
  port: 80,
  path: '/api/api_post.php',
  method: 'POST',
  headers: {
    'Content-Type': 'multipart/form-data',
    'Content-Length': query.length
  }
}, function(res) {
  var data = '';
  res.on('data', function(chunk) {
    data += chunk;
  });
  res.on('end', function() {
    console.log(data);
  });
});

req.write(query);
req.end();

console.log(query)确认该字符串编码良好且 api_option 在那里并设置为粘贴

现在,我一直在寻找可能的原因。我还尝试在写req.write(query, 'utf8')上设置编码,因为Pastebin API提到POST必须是UTF-8编码的。我一遍又一遍地重写了这个东西,并多次重新查阅Node HTTP文档。

我很确定我在这里完全错过了一些东西,因为我不知道这会如何失败。有没有人知道我做错了什么?

2 个答案:

答案 0 :(得分:2)

您创建的内容不是格式正确的multipart/form-data请求;它看起来更像是application/x-www-form-urlencoded请求。从我所说的关于pastebin的API(我从未实际使用过它)开始,后者就是你真正想要的,所以尝试将Content-Type更改为它。

答案 1 :(得分:0)

它没有直接回答你的问题,但可能会有所帮助...

您是否尝试使用请求模块?

您的示例将更容易阅读,您可能会发现问题......

mikeal/request