Сделать два асинхронных запроса и десериализировать данные в объекты C#

Job ID: 30666741

Budget: $30 – $250 USD

Есть страница, на которую можно попасть введя логин и пароль:
https://myaccount.betfair.com/activity/profitandloss

Эта страница дважды получает данные в формате JSON (sports, markets -- Screenshot_[1, 4, 5].png).

Общая задача:
Нужно получить эти JSON-данные в Windows Forms приложении, не вводя логин/пароль (но, имея ssoid):
1. JSON данные нужно десериализировать, используя либу Newtonsoft.Json;
2. HTTP-запросы нужно выполнять ассинхронно с помощью стандартного System.Net.HttpWebRequest;

В деталях:
Судя по всему, из обязательных данных, которые мы должны отослать, чтоб сервер вернул нам успешный результат -- это, чтоб в cookies были два значения (Screenshot_2.png):
- ssoid (похоже это id-сессии, которую нам возвращают после авторизации);
- loggedIn=true
(Пример реальных данных в markets.json, sports.json)

Что нужно получить в результате:
Наша задача сделать тестовое Windows Forms Application приложение, которое в главном окне имеет:
1. Поле для ввода ssoid;
2. Многострочный текстовый блок для вывода sports;
3. Многострочный текстовый блок для вывода markets;
4. Кнопку Start (можно сделать две кнопки для запуска каждого запроса)

При нажатии на Start – запросить данные sports и markets, используя указанный ssoid. Когда получили ответ этих запросов – десериализировать их и потом сразу сериализировать в строку и результат вывести в текстовый блок 2. и 3. (Т.е. цель быстро проверить, что эти данные десериализированны и их можно будет потом легко использовать)


Note: на указанной странице в betfair используется возможность выбрать временной промежуток (они передаются как данные POST-запроса) -- нас интересуют текущие сутки (т.е. с 00:00 по 00:00 след.дня)
Note2: на странице markets в запросе можно указать pageSize (по умолчанию 20) -- в наших запросах нужно какое-то значение побольше поставить, например, pageSize=200
Note3: В JSON-данных любое поле в кавычках (в т.ч. даты), можно десериализировать как строковое поле (т.е. не заморачиваемся с типами)

Если подытожить, то должно получиться: одна главная функция, которая умеет запрашивать данные с betfair, указав ssoid. И две функции, использующие ее, и вторым шагом десериализирующие данные из sports и markets. И чтоб проверить это все -- накидать форму с текстовым полем и текстовыми блоками, и одной кнопкой.
Related categories: .NET C# Programming