SendGrid POST抑制:错误请求

时间:2016-10-31 16:32:24

标签: c# sendgrid

我正在尝试创建一个用于管理SendGrid上的电子邮件组抑制的GUI,并且我正在一个我没有多少经验的C#.NET环境中工作。

该文档显示了我需要用于unsubscribing (POST)并重新订阅(DELETE)到电子邮件组的两个端点。

我能够让DELETE请求正常工作,但是文档在POST请求上不是很清楚,或者我只是不理解它。

我试过这个:

var request = new RestRequest("v3/asm/groups/" + group.id + "/suppressions", Method.POST);
request.AddParameter("recipient_emails", "['email@example.com']");

但我收到了BadRequest回复:

  

无效的JSON:无效字符'r'正在寻找值的开头

我也试过这些:

var request = new RestRequest("v3/asm/groups/" + group.id + "/suppressions?{\"recipient_emails\":[\"email@example.com\"]}", Method.POST);

var request = new RestRequest("v3/asm/groups/" + group.id + "/suppressions?recipient_emails=['email@example.com']", Method.POST);

但是我得到了一个不同的BadRequest响应:

  

无效的JSON:JSON输入的意外结束

我理解错误信息,但我甚至不确定我所做的是否正确。我需要做什么才能获得成功的回应?

另外,我知道SendGrid提供了一个C#库,但我无法让它工作。我不是C#dev,但是因为我们落后了所以我必须这样做。我想如果我能理解一个简化版本,我应该可以继续集成该库。

谢谢。

1 个答案:

答案 0 :(得分:2)

我认为此处的问题是您的请求中没有任何内容指定content-type应该是application/json。根据{{​​3}},尝试类似:

request.Method = Method.POST;
request.AddHeader("Accept", "application/json");
request.Parameters.Clear();
request.AddParameter("application/json", strJsonContent, ParameterType.RequestBody);

其中strJsonContent是JSON字符串。要构造此字符串,您可能需要使用类似JSON.NET的东西。