我尝试使用C#中的restsharp调用邮戳电子邮件服务RestAPI,得到一个"{\"ErrorCode\":402,\“Message\”:\“接收到无效的JSON输入。\”}“错误。尽管我已将数据格式设置为json,但我甚至尝试了自定义json序列化。我不确定我是否正确地设置了参数,或者甚至不确定这是实现我正在尝试的目标的最好方法,所以欢迎任何帮助和建议。
public void SendRest(string emailAddress, string subject, string body, params string[] recipients)
{
var recipientString = "";
foreach (var recipient in recipients)
{
recipientString = recipientString + recipient + ',';
}
var client = new RestClient();
client.BaseUrl = new Uri("https://api.postmarkapp.com/email");
var request = new RestRequest(Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Postmark-Server-Token", "Valid-Token");
request.AddParameter("From", "test@testington.co.uk");
request.AddParameter("To", "robin.windon@hotmail.co.uk");
request.AddParameter("Subject", "hi");
request.AddParameter("TextBody", "this is a test");
request.AddParameter("TrackOpens", true);
request.AddParameter("TrackLinks", "None");
IRestResponse response = client.Execute(request);
}发布于 2017-01-30 17:34:56
你发送的参数要么是(序列化的) POST参数(在主体中),要么是GET- parameters,我不确定restsharp是如何处理这个问题的。
但是您没有按照要求在POST正文中发送任何JSON。
我猜应该是这样的:
var params = JSON.Stringify(
{
"From": "robin.windon...",
"To": "",
"Subject": "",
"TextBody": "",
"TrackOpens": "",
"TrackLinks": ""
}
);
request.AddParameter("application/json", params, ParameterType.RequestBody);https://stackoverflow.com/questions/41932488
复制相似问题