"{\"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);