向 MailChimp 添加新订阅者 returns 错误请求

Adding new subscriber to MailChimp returns Bad Request

为了使用 API 3.0 将订阅者添加到 MailChimp 列表,需要参数电子邮件地址和状态。如果请求成功,响应将包含 json-格式的 id。

我的问题是,当我使用我的成员 Class 添加订阅者时,请求发送了 id,它是空的,因此我得到错误请求错误。如何将我的成员 class 更改为仅从响应中读取 ID 而不是将其添加到请求中?我正在使用 RestSharp,Visual Studio 2013,.Net 4.0,

我的会员class长这样

public class Member
{            
    public Member(){}
    public Member(string status)
    {
        this.status = status;
    }
    public Member(string email_address, string status)
    {
        this.status = status;
        this.email_address = email_address;
    }
    public string id { get; set; } 
    public string email_address { get; set; }
    public string status { get; set; }
}

我的 createMember 函数如下所示:

static void createMember()
{
    var client = new RestClient();
    client.BaseUrl = new Uri("https://" + dc + ".api.mailchimp.com/3.0");

    //HTML Basic Authentification
    client.Authenticator = new HttpBasicAuthenticator(usernsme, apiKey);

    var request = new RestRequest(Method.POST);
    request.Resource = "lists/{list_id}/members";

    request.AddUrlSegment("list_id", listId);

    request.RequestFormat = DataFormat.Json;

    request.AddBody(new Member(memberEmail, "subscribed"));

    RestClient.AddHandler();
    IRestResponse<Member> response2 = client.Execute<Member>(request);
    string _id = response2.Data.id;

    Console.WriteLine(response.StatusCode);
    Console.WriteLine(_id);
}

如果我从成员中删除 ID,我可以将订阅者添加到列表中 Class 但是如何从响应中获取 ID 并使用它?

根据 their reference,您调用的 API 方法具有不同的请求主体参数和响应主体参数,因此我建议使用两个不同的 类。第一个是 MemberRequest,用于请求,没有 id 字段

public class MemberRequest
{
    public MemberRequest(){}

    public MemberRequest(string status)
    {
        this.status = status;
    }

    public MemberRequest(string email_address, string status)
    {
        this.status = status;
        this.email_address = email_address;
    }

    public string email_address { get; set; }
    public string status { get; set; }
}

第二个是 MemberResponse,用于响应并具有 id 字段

public class MemberResponse
{
    public string id { get; set; }
    public string email_address { get; set; }
    public string status { get; set; }
}

这是您的 createMember 方法的样子

static void createMember()
{
    var client = new RestClient();
    client.BaseUrl = new Uri("https://" + dc + ".api.mailchimp.com/3.0");

    //HTML Basic Authentification
    client.Authenticator = new HttpBasicAuthenticator(usernsme, apiKey);

    var request = new RestRequest(Method.POST);
    request.Resource = "lists/{list_id}/members";

    request.AddUrlSegment("list_id", listId);

    request.RequestFormat = DataFormat.Json;

    request.AddBody(new MemberRequest(memberEmail, "subscribed"));

    IRestResponse<MemberResponse> response = client.Execute<MemberResponse>(request);
    string _id = response.Data.id;

    Console.WriteLine(response.StatusCode);
    Console.WriteLine(_id);
}