c# - 创建 Restsharp 调用以在数组中添加参数

标签 c# restsharp

我需要在我的 C# 控制台应用程序中使用 Restsharp 将以下参数发送到 AP

我浏览过这里和其他网站,但没有找到任何可以开始工作的东西。

这就是原始代码的样子

 {
"LicenceNumber":"511237P",
"CardNumber":"DB07067",
"ExternalID":"ID56758",
"Comments":"data uploaded via automated weekly process",
"Rules":"EU",
"Activities": [
    {
        "StartTime":"2019-04-14 09:00:00",
        "Duration":"480",
        "ActivityType":"Rest"
    }
    ]
 }

我需要做的是使用 Restsharp request.AddAddParameter 将 StartTime、Duration 和 ActivityType 添加到 Activity,但我不知道如何继续。

到目前为止我所拥有的内容如下:

        static void PostRecord(string url)
    {
        url = url + "/" + MembershipNumber;
        var client = new RestClient(url);
        var request = new RestRequest(Method.POST);
        request.AddHeader("Authorization", "Bearer " + Token);
        request.AddParameter("LicenceNumber", LicenceNumber);
        request.AddParameter("CardNumber", CardNumber);
        request.AddParameter("ExternalID", ExternalID);
        request.AddParameter("Comments", Comments);
        request.AddParameter("Rules", Rules);
        request.AddParameter("Activities", "Activities");

    }

任何帮助将不胜感激

***** 更新 ********** 经过更多调查后,我修改了我的代码,但说必须提供事件详细信息,因此它无法识别数组中的值

        url = url + "/" + MembershipNumber;
        var client = new RestClient(url);
        var request = new RestRequest(Method.POST);
        var Activities= new Dictionary<string, object>();
        Activities.Add("StartTime", "2019-04-14 09:00:00");
        Activities.Add("Duration", "480");
        Activities.Add("ActivityType", "Rest");
        JsonObject o = new JsonObject();
        foreach (var kvp in Activities)
        {
            o.Add(kvp);
        }
        JsonArray array = new JsonArray();
        array.Add(o);
        request.AddHeader("Authorization", "Bearer " + Token);
        request.AddHeader("Content-Type", "application/json");
        request.AddParameter("LicenceNumber", LicenceNumber);
        request.AddParameter("CardNumber", CardNumber);
        request.AddParameter("ExternalID", ExternalID);
        request.AddParameter("Comments", Comments);
        request.AddParameter("Rules", Rules);
        request.AddParameter("Activities", array.ToString());
        IRestResponse response = client.Execute(request);

最佳答案

创建一个对象,然后相应地为其分配值:

public class Activity
{
    public string StartTime { get; set; }
    public string Duration { get; set; }
    public string ActivityType { get; set; }
}

public class RootObject
{
    public string LicenceNumber { get; set; }
    public string CardNumber { get; set; }
    public List<Activity> Activities { get; set; }
}

您可以使用自动属性,您可以从诸如 this 之类的网站生成它们。

然后您可以创建该类的实例并分配您需要的所有值,如下所示:

url = url + "/" + MembershipNumber;
var client = new RestClient(url);
var request = new RestRequest(Method.POST);

request.AddHeader("Authorization", "Bearer " + Token);
// This how you assign your values for the RootObject class
RootObject MyObject = RootObject();
MyObject.LicenceNumber  = LicenceNumber;
MyObject.CardNumber = CardNumber;

// then for the activities class you can do the following

MyObject.Activities = new List<Activity>();
MyObject.Activities.Add(new Activity(){StartTime = "2019-04-14 09:00:00", Duration = "480",ActivityType = "Rest"});
string jsonString = JsonConvert.SerializeObject(MyObject);
request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

关于c# - 创建 Restsharp 调用以在数组中添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55706939/

相关文章:

windows-phone-7 - WP7 - 防止 RestSharp 缓存

c# - 在 ASP.NET Core 中有条件隐藏操作方法的简单便捷方法

c# - IOC 和动态参数

c# - 除以 3 并向上舍入(如果需要)C#

C# MouseHover 上的按钮透明背景

c# - RestSharp 中的参数计数不匹配错误?

.net - Windows Phone 8 使用 RestSharp 请求启用 REST 的 https 托管服务

c# - WCF 中长时间运行的异步线程

c# - 使用 RestSharp 客户端反序列化嵌套的 JSON 响应

wpf - 如何将 RestClient 与 Oauth 2.0 和客户端 + TLS 证书一起使用?