Я пытаюсь загрузить JSON из URL.Я отлаживаю приложение через свое устройство Samsung, но по какой-то причине httpclient загружает данные очень долго.
Когда я устанавливаю время ожидания с помощью TimeSpan.FromMinutes (30), httpclient занимает очень много времени, что практически невозможно.Однако, когда я удаляю тайм-аут, я получаю исключение TaskCancelled, которое ловит блок try catch.
Кто-нибудь видел такое раньше?
Пробовал проверять разрешения: Единственное разрешение, которое требуется приложению, этоИнтернет, который по умолчанию предоставляется в режиме отладки.
Любая помощь будет оценена.Спасибо!
Редактировать
Этот класс отвечает за загрузку данных:
public static class DataSource
{
public async static void LoadFrom()
{
var uri = new Uri("https://api.coinmarketcap.com/v2/ticker/?convert=usd&sort=price");
try
{
bool isConnected = CrossConnectivity.Current.IsConnected;
HttpClient myClient = new HttpClient(new Xamarin.Android.Net.AndroidClientHandler());
var response = await myClient.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var Data = await response.Content.ReadAsStringAsync();
var CoinMarketCapObject = JsonConvert.DeserializeObject<CoinMarketCap.CoinMarketCapCurrencyData>(Data);
List<Currency> currencies = new List<Currency>();
if (CoinMarketCapObject != null)
{
foreach (var Datum in CoinMarketCapObject.Data)
{
currencies.Add(new Currency(Datum.Value.name, Datum.Value.symbol, Datum.Value.quotes.USD.price));
}
}
}
}
catch (TimeoutException ex)
{
// Check ex.CancellationToken.IsCancellationRequested here.
// If false, it's pretty safe to assume it was a timeout.
}
catch (TaskCanceledException ex)
{
// Check ex.CancellationToken.IsCancellationRequested here.
// If false, it's pretty safe to assume it was a timeout.
}
catch (Exception e)
{
Debug.Print(e.Message);
}
}
}
Я вызываю метод LoadFromиз метода OnStart.
protected override void OnStart ()
{
// Handle when your app starts
API.DataSource.LoadFrom();
}