Here is another example you can use for WinForms , WPF or Console apps
Client code
async Task<CalendarView> GetData(int month, int year, int deviceTypeID) { var result = new MSOCommon.CalendarView(); try { HttpClient client = new HttpClient(); var calendarRequest = new CalendarRequest() { Month = month, Year = year, DeviceTypeID = deviceTypeID, UserInfo = Program.UserInfo }; var url = Properties.Settings.Default.ServerBaseUrl + string.Format("/api/calendar/Calendar"); HttpResponseMessage response = await client.PostAsync(url, calendarRequest.AsJson()); if (response.IsSuccessStatusCode)
Controller Server Code
[HttpPost()] public CalendarView Calendar(CalendarRequest calendarRequest) { logger.Info(string.Format("Get calendar for month {0} and year {1} ", calendarRequest.Month, calendarRequest.Year)); // TODO Check username var result = new CalendarView(); using (var db = new MSOnlineEntities()) { result = db.Calendars.Include("CalendarDetails") .Where(x => x.CMonth == calendarRequest.Month && x.CYear == calendarRequest.Year && x.CDeviceTypeID == calendarRequest.DeviceTypeID).ToList() .ConvertAll(x => new CalendarView { ID = x.ID, CMonth = x.CMonth, CYear = x.CYear, CDays = x.CDays, CDeviceTypeID = x.CDeviceTypeID, ClosedAtTime = x.ClosedAtTime, ClosedByUser = x.ClosedByUser, IsClosed = x.IsClosed, CalendarDetails = x.CalendarDetails.ToList().ConvertAll(d => new CalendarDetailView { ID = d.ID, CalendarID = d.CalendarID, MachineID = d.MachineID, MachineName = d.DATA_MACHINE.Name, D1 = d.D1 ?? -1, D2 = d.D2 ?? -1, D3 = d.D3 ?? -1, D4 = d.D4 ?? -1, D5 = d.D5 ?? -1, D6 = d.D6 ?? -1, D7 = d.D7 ?? -1, D8 = d.D8 ?? -1, D9 = d.D9 ?? -1, D10 = d.D10 ?? -1, D11 = d.D11 ?? -1, D12 = d.D12 ?? -1, D13 = d.D13 ?? -1, D14 = d.D14 ?? -1, D15 = d.D15 ?? -1, D16 = d.D16 ?? -1, D17 = d.D17 ?? -1, D18 = d.D18 ?? -1, D19 = d.D19 ?? -1, D20 = d.D20 ?? -1, D21 = d.D21 ?? -1, D22 = d.D22 ?? -1, D23 = d.D23 ?? -1, D24 = d.D24 ?? -1, D25 = d.D25 ?? -1, D26 = d.D26 ?? -1, D27 = d.D27 ?? -1, D28 = d.D28 ?? -1, D29 = d.D29 ?? -1, D30 = d.D30 ?? -1, D31 = d.D31 ?? -1 }) }).FirstOrDefault(); return result; } }