Создание вызова Restsharp для добавления параметров в массив - PullRequest
1 голос
/ 16 апреля 2019

Мне нужно отправить следующие параметры в точку доступа с помощью Restsharp в моем консольном приложении C #

Я смотрел здесь и на других сайтах, но не нашел ничего, что смогу заставить работать.

Вот как выглядит необработанный код

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

1 Ответ

1 голос
/ 17 апреля 2019

Создайте объект и затем присвойте ему соответствующие значения:

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);
...