C# 将新订户添加到MailChimp会返回错误的请求
为了使用API 3.0将订户添加到MailChimp列表中,需要参数e-MailAddress和status。如果请求成功,响应将包含json格式的id 我的问题是,当我使用我的成员类添加订阅者时,请求会发送id,id为null,因此我得到错误请求。如何将成员类更改为仅从响应中读取id,而不将其添加到请求中?我正在使用RestSharp、Visual Studio 2013、.Net 4.0、 我的成员类看起来像这样C# 将新订户添加到MailChimp会返回错误的请求,c#,restsharp,mailchimp-api-v3.0,C#,Restsharp,Mailchimp Api V3.0,为了使用API 3.0将订户添加到MailChimp列表中,需要参数e-MailAddress和status。如果请求成功,响应将包含json格式的id 我的问题是,当我使用我的成员类添加订阅者时,请求会发送id,id为null,因此我得到错误请求。如何将成员类更改为仅从响应中读取id,而不将其添加到请求中?我正在使用RestSharp、Visual Studio 2013、.Net 4.0、 我的成员类看起来像这样 public class Member { p
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);
}
static void createMember()
{
var client=new RestClient();
client.BaseUrl=新Uri(“https://“+dc+”.api.mailchimp.com/3.0”);
//HTML基本身份验证
client.Authenticator=新的HttpBasicAuthenticator(usernsme,apiKey);
var请求=新的重新请求(Method.POST);
request.Resource=“lists/{list\u id}/members”;
AddUrlSegment(“列表id”,列表id);
request.RequestFormat=DataFormat.Json;
请求。AddBody(新成员(成员电子邮件,“已订阅”);
RestClient.AddHandler();
IRestResponse response2=客户端。执行(请求);
字符串_id=response2.Data.id;
Console.WriteLine(响应状态码);
控制台写入线(_id);
}
如果我从成员类中删除id,我可以将订阅者添加到列表中,但是如何从响应中获取id并使用它呢?根据,您调用的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; }
}
public class MemberResponse
{
public string id { get; set; }
public string email_address { get; set; }
public string status { get; set; }
}
第二个是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; }
}
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);
}
static void createMember()
{
var client=new RestClient();
client.BaseUrl=新Uri(“https://“+dc+”.api.mailchimp.com/3.0”);
//HTML基本身份验证
client.Authenticator=新的HttpBasicAuthenticator(usernsme,apiKey);
var请求=新的重新请求(Method.POST);
request.Resource=“lists/{list\u id}/members”;
AddUrlSegment(“列表id”,列表id);
request.RequestFormat=DataFormat.Json;
request.AddBody(新成员请求(memberEmail,“已订阅”);
IRestResponse response=client.Execute(请求);
字符串_id=response.Data.id;
Console.WriteLine(响应状态码);
控制台写入线(_id);
}
非常感谢。这正是我要找的。