2017-01-06 2 views
1

API 3.0을 사용하여 MailChimp 목록에 가입자를 추가하려면 전자 메일 주소 및 상태 매개 변수가 필요합니다. 요청이 성공하면 응답에는 json 형식의 ID가 포함됩니다.MailChimp에 새 가입자를 추가하면 잘못된 요청이 반환됩니다.

제 문제는 회원 클래스를 사용하여 구독자를 추가 할 때 요청이 null 인 ID를 전송하므로 잘못된 요청이라는 오류가 발생합니다. 응답에서 ID 만 읽고 요청에 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, 비주얼 스튜디오 2013, 닷넷 4.0을 사용하고 있습니다 구독자를 목록에 추가하려면 회원 클래스에서 ID를 제거해야하지만 어떻게 ID를 응답에서 가져와 작업 할 수 있습니까?

답변

1

their reference에 따르면 호출하려는 API 메소드는 요청 본문 매개 변수와 응답 본문 매개 변수가 다르므로 두 개의 다른 클래스를 사용하는 것이 좋습니다. 첫 번째는 요청을하고 응답을위한 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; } 
} 

및 두번째 갖고 있지 않고 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

관련 문제