2

I need to send the following parameters to an AP using Restsharp in my C# console app

I have looked on here and on other sites, but not found anything that I can get to work.

This is what the raw code looks like

 {
"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"
    }
    ]
 }

What I need to do is use the Restsharp request.AddAddParameter to add the StartTime, Duration and ActivityType to the Activities but I am not sure how to proceed.

What I have so far is the following:

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

    }

Any help would be much appreciated

****** UPDATE ********** I have amended my code after some more investigation it runs but says that the Activities details must be supplied so its not recognising the values in the array

        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
  • 2
    why "Activities" as string pass as List<Object> Commented Apr 16, 2019 at 11:21

1 Answer 1

3

Create a object and then assign your values to it accordingly:

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; }
}

You can use Auto Properties you can generate them from a website such as this

Then you can create an instance of that class and assign all the values you need like so:

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);
Sign up to request clarification or add additional context in comments.

1 Comment

thanks for this I will give it a try and let you know how I get on

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.