我正在使用NodeJS调用新的MailChimp 3.0 API,以便将电子邮件添加到列表中。虽然我可以通过POSTman使用它,但我很难使用Node的http:
var http = require('http');
var subscriber = JSON.stringify({
"email_address": "test@test.com",
"status": "subscribed",
"merge_fields": {
"FNAME": "Tester",
"LNAME": "Testerson"
}
});
var options = {
host: 'https://us11.api.mailchimp.com',
path: '/3.0/lists/<myListID>/members',
method: 'POST',
headers: {
'Authorization': 'randomUser myApiKey',
'Content-Type': 'application/json',
'Content-Length': subscriber.length
}
}
var hreq = http.request(options, function (hres) {
console.log('STATUS CODE: ' + hres.statusCode);
console.log('HEADERS: ' + JSON.stringify(hres.headers));
hres.setEncoding('utf8');
hres.on('data', function (chunk) {
console.log('\n\n===========CHUNK===============')
console.log(chunk);
res.send(chunk);
});
hres.on('end', function(res) {
console.log('\n\n=========RESPONSE END===============');
});
hres.on('error', function (e) {
console.log('ERROR: ' + e.message);
});
});
hreq.write(subscriber);
hreq.end();
然而,我没有从Mailchimp获得某种JSON错误,而是获取HTML: 400错误请求
根本不清楚我在这里做错了什么?看起来很简单,但我尝试过的任何东西似乎都没有用。
还有一些想法:
答案 0 :(得分:4)
事实证明这有一个非常简单的解决方案:&#34;主持人&#34;选项对象的属性需要仅域名。 IE,删除&#34; https://&#34;协议:
var options = {
host: 'us11.api.mailchimp.com',
path: '/3.0/lists/<myListID>/members',
method: 'POST',
headers: {
'Authorization': 'randomUser myApiKey',
'Content-Type': 'application/json',
'Content-Length': subscriber.length
}
}
答案 1 :(得分:4)
试试这个,它对我来说很好。
var request = require('request');
function mailchimpAddListCall(email, cb){
var subscriber = JSON.stringify({
"email_address": email,
"status": "subscribed"
});
request({
method: 'POST',
url: 'https://us13.api.mailchimp.com/3.0/lists/<Your list id>/members',
body: subscriber,
headers:
{
Authorization: 'apikey <your Mailchimp API key>',
'Content-Type': 'application/json'
}
},
function(error, response, body){
if(error) {
cb(err, null)
} else {
var bodyObj = JSON.parse(body);
console.log(bodyObj.status);
if(bodyObj.status === 400){
cb(bodyObj.detail, null);
}
var bodyObj = JSON.parse(body);
cb(null, bodyObj.email_address +" added to list.");
}
});
}
request
是一个节点模块,您需要将其安装到package.json中。 npm install --save request
答案 2 :(得分:0)
您可以在API v3中使用auth
属性,但如果您获得400,那不是问题。 400错误的主体应提供更详细的信息,但有一件事立即跳出:MailChimp不允许将假冒或假冒的电子邮件添加到列表中(如test@test.com),所以我&# 39; d尝试一个真实的地址,看看它是否适合你。