Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将新订户添加到MailChimp会返回错误的请求_C#_Restsharp_Mailchimp Api V3.0 - Fatal编程技术网

C# 将新订户添加到MailChimp会返回错误的请求

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

为了使用API 3.0将订户添加到MailChimp列表中,需要参数e-MailAddress和status。如果请求成功,响应将包含json格式的id

我的问题是,当我使用我的成员类添加订阅者时,请求会发送id,id为null,因此我得到错误请求。如何将成员类更改为仅从响应中读取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);
}
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);
}

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