2015-12-19 95 views
0

我们遇到了使用MailChimp API V3将成员添加到列表的问题。 这里是我们的代码:在MailChimp API V3中订阅用户

client.BaseAddress = new Uri("https://us12.api.mailchimp.com/3.0/"); 
client.DefaultRequestHeaders.Accept.Clear(); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
client.DefaultRequestHeaders.Authorization = 
        new AuthenticationHeaderValue("Basic", "API Key"); 

var reply = await client.GetStringAsync("lists"); 

var list = JsonConvert.DeserializeObject<ListResults>(reply); 

AddMembers member = new AddMembers { 
             EmailAddress = "[email protected]", 
             Status = "subscribed" 
            }; 

string url = "lists/" + list.Data[0].Id + "/members"; 

string jsonData = JsonConvert.SerializeObject(member); 
var content = new StringContent(
        jsonData, 
        Encoding.UTF8, 
        "application/json"); 

HttpResponseMessage addMember = await client.PostAsync(url, content); 

而这正是MailChimp预计:

--url 'https://usX.api.mailchimp.com/3.0/lists/57afe96172/members' \ 
--user 'anystring:apikey' \ 
--header 'content-type: application/json' \ 
--data '{"email_address":"[email protected]", "status":"subscribed"}' 

但我们下面的代码后得到:

HttpResponseMessage addMember = await client.PostAsync(url, content); 

是一个 '错误的请求' 消息StatusCode'400'。我们真的很困惑,也许有些简单的东西缺失。

+0

尝试通过在代码的一部分中放置'Console.WriteLine()'语句来调试它。例如,在发出POST请求之前,“url”属性的值是多少?该URL是否正确导出? –

+0

网址生成正确。我们事先检查过它。此外,内容字段是发布的最终JSON,就像mailchimp期望的数据一样。顺便说一句,因为mailchimp的协议是https,我们不能使用fiddler调试我们发布的值。 –

+0

你应该从MailChimp发布错误响应体,它通常会告诉你问题是什么。可能是“[email protected]”被选为伪造地址? – TooMuchPete

回答

0

如果这是客户端JavaScript,那就是你的问题。 MailChimp的API不支持CORS,因此您无法从浏览器发出API请求。在这种情况下,这可能是一件好事,因为将您的API密钥发送给客户端会让每个访问者访问您的网站完全访问您的MailChimp帐户。

+0

感谢您的回答。看起来,如果您将重复的用户发送给MailChimp,他们会向您发送错误的请求错误。 –