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

Posted

技术标签:

【中文标题】向 MailChimp 添加新订阅者返回错误请求【英文标题】:Adding new subscriber to MailChimp returns Bad Request 【发布时间】: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 并使用它?

【问题讨论】:

【参考方案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);

【讨论】:

非常感谢。这正是我想要的。

以上是关于向 MailChimp 添加新订阅者返回错误请求的主要内容,如果未能解决你的问题,请参考以下文章

发生一个或多个错误。(发送请求时发生错误)Mailchimp 列表集成

Mailchimp 每次都向订阅者发送所有提要

MailChimp 重新订阅已删除的成员会导致 API 返回 400 错误请求

Mailchimp V3 以兴趣为参数订阅

使用 MailChimp API v3.0 创建新的订阅者验证错误

我需要通过组件帖子向 mailchimp 订阅列表发出 http 请求