【问题标题】:Adding new subscriber to MailChimp returns Bad Request向 MailChimp 添加新订阅者返回错误请求
【发布时间】:2017-05-21 09:30:12
【问题描述】:

为了使用 API 3.0 将订阅者添加到 MailChimp 列表,需要参数 e-mailadress 和 status。如果请求成功,响应将包含 json 格式的 id。

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

我的成员类是这样的

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,我可以将订阅者添加到列表中,但是如何从响应中获取 Id 并使用它?

【问题讨论】:

    标签: c# restsharp mailchimp-api-v3.0


    【解决方案1】:

    根据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);
    }
    

    【讨论】:

    • 非常感谢。这正是我想要的。
    猜你喜欢
    • 2018-05-08
    • 2016-06-12
    • 2019-02-11
    • 2012-01-07
    • 2020-12-12
    • 2018-05-15
    • 2019-02-17
    • 2023-04-05
    • 2018-02-11
    相关资源
    最近更新 更多