2017-01-06 2 views
1

API 3.0を使用してMailChimpリストに加入者を追加するには、パラメータe-mailadressとstatusが必要です。要求が成功すると、応答はjson-formatのIDを含みます。MailChimpに新しい加入者を追加するとBad Requestが返される

私の問題は、メンバークラスを使用してサブスクライバを追加すると、リクエストがnullであるIDを送信するため、エラーBadが発生するということです。どのようにしてレスポンスからIDを読み込み、要求にそれを追加しないようにメンバークラスを変更できますか?

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

私が追加することができます。私は私のメンバクラスが

このような
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機能は次のようになりRestSharp、Visual Studioの2013、.NET 4.0、

を使用していますメンバークラスからIDを削除すると、サブスクライバをリストに追加できますが、レスポンスからIDを取得してそのIDを処理する方法はありますか?

答えて

1

their referenceによれば、呼び出すAPIメソッドはリクエストボディパラメータとレスポンスボディパラメータが異なりますので、2つの異なるクラスを使用することをお勧めします。最初のものは、要求のためのものであると応答のためのものであるMemberResponseを、あろう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; } 
} 

2つ目を持っていないとidフィールドを有するMemberRequest、あろう

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); 
} 
+0

のようになります方法ですありがとうございました。これはまさに私が探していたものでした。 – ptrask

関連する問題