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而不是我想要提取的数据。

4

2 回答 2

0

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

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

var options = {
host: 'https://us12.api.mailchimp.com',
path : '/3.0/'
headers: {
    'Authorization': 'anystring:APIKEY',
    'Content-Type': 'application/json',
};
于 2016-09-02T04:18:02.847 回答
0

好吧,我似乎可以正常工作,需要更改一些内容:

  1. 正如@I-Am-Not-Legend 提到的,主机和路径选项都需要正确设置。
  2. 需要将anystring字符串更改为apikey

一旦我做了这两件事,请求就会按预期工作。完整代码如下,只需确保APIKEY使用您的实际 API 密钥切换出去,并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); });
于 2016-09-02T04:29:43.603 回答