Node.js HTTP获取Mailchimp请求返回错误

时间:2016-09-02 03:56:11

标签: javascript node.js mailchimp-api-v3.0

每当我运行以下curl代码时,我对Mailchimp 3.0 API的请求都很顺利:

curl --request GET \
--url 'https://us12.api.mailchimp.com/3.0/' \
--user 'anystring:APIKEY'

但是,每当我使用Node.js向API发出请求时,都会收到以下错误:

Got error: connect ECONNREFUSED 127.0.0.1:80

我假设我在.js文件中遗漏了某些内容或者有什么不匹配的内容,有什么想法可能是什么?节点代码如下:

 "use strict";
/* globals require, console */
var http = require('http');


var options = {
    url: 'https://us12.api.mailchimp.com/3.0/',
    headers: {
        'Authorization': 'anystring:APIKEY',
        'Content-Type': 'application/json',
    }
};

http.get(options, (res) => {
  console.log(`Got response: ${res.statusCode}`);
  // consume response body
  res.resume();
}).on('error', (e) => {
  console.log(`Got error: ${e.message}`);
});

编辑:使用未捕获的异常将返回以下内容:

Error: connect ECONNREFUSED 127.0.0.1:80
    at Object.exports._errnoException (util.js:856:11)
    at exports._exceptionWithHostPort (util.js:879:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1053:14)

编辑2:修复了部分内容。使用url作为我的选项之一而不是host。以下是该部分的正确代码:

var options = {
    host: 'https://us12.api.mailchimp.com/3.0/',
    headers: {
        'Authorization': 'anystring:APIKEY',
        'Content-Type': 'application/json',
    }
};

现在我收到了追溯Got response: 400,而不是我想拉的数据。

2 个答案:

答案 0 :(得分:0)

根据documentation,选项中没有url属性。 您应该指定主机和路径。

您的选项对象应如下所示。

var options = {
host: 'https://us12.api.mailchimp.com',
path : '/3.0/'
headers: {
    'Authorization': 'anystring:APIKEY',
    'Content-Type': 'application/json',
};

答案 1 :(得分:0)

好吧,我好像有工作,需要改变一些事情:

  1. 正如@ I-Am-Not-Legend所述,主机和路径选项都需要正确设置。
  2. anystring字符串需要更改为apikey
  3. 一旦我做了这两件事,请求按预期工作。完整代码如下所示,只需确保使用您的实际API密钥切换APIKEY,然后将us12与您帐户的相应数据中心(位于API密钥末尾)一起切换出来。

    "use strict";
    /* globals require, console */
    var http = require('http');
    
    
    var options = {
        host: 'us12.api.mailchimp.com',
        path: '/3.0/',
        headers: {
            'Authorization': 'apikey APIKEY',
            'Content-Type': 'application/json',
        }
    };
    
    http.get(options, (res) => {
      console.log(`Got response: ${res.statusCode}`);
      res.on('data', (chunk) => {
        console.log(`BODY: ${chunk}`);
      });
      // consume response body
      res.resume();
    }).on('uncaughtException', function (err) { console.log(err); });