"{\"ErrorCode\":402,\"Message\":\"Received invalid JSON input.\"}" 当试图调用 restsharp 来调用 Postmark
"{\"ErrorCode\":402,\"Message\":\"Received invalid JSON input.\"}" When trying to call restsharp to make call to Postmark
我正在尝试在 C# 中使用 restsharp 调用 Postmarks 电子邮件服务 RestAPI 并获得“{\"ErrorCode\":402,\"Message\":\"Received invalid JSON input.\"} “即使我已将数据格式设置为 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);
}
您将参数作为(序列化的)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);
我正在尝试在 C# 中使用 restsharp 调用 Postmarks 电子邮件服务 RestAPI 并获得“{\"ErrorCode\":402,\"Message\":\"Received invalid JSON input.\"} “即使我已将数据格式设置为 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);
}
您将参数作为(序列化的)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);