1

Mailchimp リストにサブスクライブを投稿する次の呼び出しがありますが、無許可で返されます。APIキー、リスト、およびユーザー名がweb.configに保存されており、トリプルチェックしました。

using (var wc = new System.Net.WebClient())
{
    string parameters = string.Concat("email_address=", email, "&status=", "subscribed"),
           url = "https://us12.api.mailchimp.com/3.0/lists/" + ConfigurationManager.AppSettings["MailChimp.ListId"] + "/members";

    wc.Headers.Add("Content-Type", "application/json");

    wc.Credentials = new NetworkCredential("", ConfigurationManager.AppSettings["MailChimp.ApiKey"]);

    string result = wc.UploadString(url, parameters);
}
4

1 に答える 1

4

コードにはいくつかの問題があります。

  1. メール アドレスとステータスを JSON ではなくクエリ文字列パラメーターとして送信している
  2. この方法で WebClient を使用して資格情報を送信すると、正しく機能しません。

次のことを試してください。

var apiKey = "<api-key>";
var listId = "<your-list-id>";
var email = "<email-address-to-add>";

using (var wc = new System.Net.WebClient())
{
    // Data to be posted to add email address to list
    var data = new { email_address = email, status = "subscribed" };

    // Serialize to JSON using Json.Net
    var json = JsonConvert.SerializeObject(data);

    // Base URL to MailChimp API
    string apiUrl = "https://us12.api.mailchimp.com/3.0/";

    // Construct URL to API endpoint being used
    var url = string.Concat(apiUrl, "lists/", listId, "/members");

    // Set content type
    wc.Headers.Add("Content-Type", "application/json");

    // Generate authorization header
    string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(":" + apiKey));

    // Set authorization header
    wc.Headers[HttpRequestHeader.Authorization] = string.Format("Basic {0}", credentials);

    // Post and get JSON response
    string result = wc.UploadString(url, json);
}
于 2016-03-05T04:10:58.917 に答える