2015-12-19 92 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,他們會向您發送錯誤的請求錯誤。 –