向 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);
}
为了使用 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);
}