Httpclient.GetStringAsync работает в UWP и iOS, но не в Android на формах Xamarin - PullRequest
0 голосов
/ 23 июня 2019

Я действительно застрял на этом. Я обновил свой проект Xamarin Forms до .NET Standard с PCL, и этот код ниже больше не работает на Android. У меня есть настройки Android для реализации HttpClient Android и реализации SSL / TLS в Native TLS 1.2+. В частности, когда я отлаживаю и пытаюсь перешагнуть через строку с httpClient.GetStringAsync… он взрывается, если Frame не находится в модуле (текущий кадр стека не найден в загруженном модуле. Исходный код для этого расположения не отображается) , И он возвращается обратно к абоненту. Попытка / ловить не ловит и ошибки. Я могу пройти этот код нормально в UWP / iOS. Я застрял на этом некоторое время сейчас. Любые идеи очень приветствуются. Я попытался обернуть httpclient с помощью оператора using и получить те же результаты. Все мои пакеты NuGet обновлены. Я работаю на реальном устройстве под управлением Android версии 8.1.0, а не на эмуляторе, на реальном сервисе, а не на localhost. Вот мой код: :

        private async Task<List<string>> GetVideoIdsFromPlaylistAsync()
        {
            var httpClient = new HttpClient();
            var videoIds = new List<string>();
            try
            {
            var json = await httpClient.GetStringAsync(apiUrlForPlaylist).ConfigureAwait(false);
                JObject response = JsonConvert.DeserializeObject<dynamic>(json);
                var items = response.Value<JArray>("items");
                foreach (var item in items)
                {
                    videoIds.Add(item.Value<JObject>("contentDetails")?.Value<string>("videoId"));
                };
                YoutubeItems = await GetVideosDetailsAsync(videoIds);
            }
            catch (Exception ex)
            {
                Console.WriteLine(@"     Error {0}", ex.Message);
                Console.WriteLine(@"     Error {0}", ex.InnerException?.Message);
            }
            return videoIds;
        }

1 Ответ

0 голосов
/ 28 июня 2019

Я понял это.Нет ничего плохого в коде.Я смотрел на этот пост https://forums.xamarin.com/discussion/88370/httpclient-getasync-throws-task-was-cancelled-exception, и это заставило меня задуматься, чтобы попробовать несколько вещей.Я получал ошибку тайм-аута, если я позволил этому работать достаточно долго (от 1 до 2 минут).Я попробовал свою точку доступа на моем телефоне для Wi-Fi вместо моего домашнего Wi-Fi, и это работает.Итак, я перезагрузил кабельный модем, и он работает как положено.Пойди разберись?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...