Как вызвать REST API из приложения tvOS с помощью Xamarin?

Я пытаюсь вызвать REST API из своего приложения tvOS. Ниже приведен мой код при нажатии кнопки:

async void ButtonClicked(UIButton sender)
        {
            try
            {
                HttpClient client = new HttpClient();
                var response = await client.GetAsync("rest api url");
                if (response.IsSuccessStatusCode)
                {
                    var Response = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
                    if (!string.IsNullOrWhiteSpace(Response.ToString()))
                    {
                        var category = JsonConvert.DeserializeObject<Videos>(Response.ToString());
                        Debug.WriteLine("count:>>" + category.webContentCategoryList.Count);
                    }
                }
            }
            catch(Exception e)
            {
                Debug.WriteLine("Exception:>>"+e);
            }

Я установил пакеты system.net.http и newtonsoft.json nuget. Но когда я запускаю проект, приложение показывает файл Main.cs, как показано ниже:

Я что-то упускаю в этом?

ОБНОВЛЕНИЕ

Я добавил точку останова для первой строки внутри функции ButtonClicked. Когда я нажимаю кнопку, приложение показывает файл Main.cs, как показано на скриншоте выше. Он не попадает в первую строку функции ButtonClicked.

Так что проблема в другом, я не эксперт в приложениях tvOS, поэтому не могу понять. Я загрузил пример проекта здесь.


person Sreejith Sree    schedule 19.06.2020    source источник


Ответы (1)


Я исправил эту проблему, разделив вызов службы на новую функцию, как показано ниже, новая функция — это асинхронный метод:

partial void ButtonClicked(UIButton sender)
    {
        LoadData();
    }

    async void LoadData()
    {
        HttpClient client = new HttpClient();
        var response = await client.GetAsync("service url");
        if (response.IsSuccessStatusCode)
        {
            var Response = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
            if (!string.IsNullOrWhiteSpace(Response.ToString()))
            {
                var category = JsonConvert.DeserializeObject<Videos>(Response.ToString());
                Debug.WriteLine("count:>>" + category.Count);
            }
        }
    }

Моя тема находится здесь для получения более подробной информации.

person Sreejith Sree    schedule 15.07.2020