Xamarin HttpClient метод Ошибка времени ожидания GetAsync

Я предлагаю вам просто использовать аргумент ключевого слова key в sorted для достижения желаемого списка. Например:

to_order= [e2,E1,e5,E4,e3]
ordered= sorted(to_order, key= lambda x: x.lower())
    # ordered should be [E1,e2,e3,E4,e5]
1
задан Lama Madan 16 January 2019 в 16:22
поделиться

2 ответа

Попробуйте это.

public PatientModel abc { get; set; }

public MainPage()
{
    InitializeComponent();

    Bridge();

    // Using abc
}

public async void Bridge()
{
    abc = new PatientModel();
    abc = await GetPatientData();
}

public async Task<PatientModel> GetPatientData()
{
    PatientModel patient = null;
    try
    {
        Uri weburl = new Uri("myuri");
        HttpClient client = new HttpClient();
        Console.WriteLine("a");
        HttpResponseMessage response = await client.GetAsync(weburl);
        Console.WriteLine("b");
        if (response.IsSuccessStatusCode)
        {
            Console.WriteLine("in");
            patient = await response.Content.ReadAsAsync<PatientModel>();
            Console.WriteLine("in funciton");
            return patient;
        }
        return patient;
    }catch(Exception ex)
    {
        Console.WriteLine(ex);
        return patient;
    }
}
0
ответ дан Enrique Arce 16 January 2019 в 16:22
поделиться

Подумайте об использовании асинхронного обработчика событий вместе со статическим HttpClient

static HttpClient client = new HttpClient();

public MainPage() {
    InitializeComponent();
    loadingData += onLoadingData;        
}

protected override void OnAppearing() {
    //loadingData -= onLoadingData; //(optional)
    loadingData(this, EventArgs.Empty);
    base.OnAppearing();
}

private event EventHandler loadingData = delegate { };

private async void onLoadingData(object sender, EventArgs args) {
    var model = await GetPatientData();
    this.BindingContext = new PatientViewModel(model);
}

public async Task<PatientModel> GetPatientData() {
    PatientModel patient = null;
    try {
        Uri weburl = new Uri("myuri");
        Console.WriteLine("a");
        var response = await client.GetAsync(weburl);
        Console.WriteLine("b");
        if (response.IsSuccessStatusCode) {
            Console.WriteLine("in");
            patient = await response.Content.ReadAsAsync<PatientModel>();
            Console.WriteLine("in funciton");
        }           
    }catch(Exception ex) {
        Console.WriteLine(ex);
    }
    return patient;
}

. Использование этого шаблона может помочь избежать блокирования вызовов и исчерпания сокетов, которые иногда могут привести к взаимным блокировкам, которые могут вызвать возникшие тайм-ауты.

Ссылка Async / Await - Лучшие практики асинхронного программирования

Ссылка Вы неправильно используете HttpClient

0
ответ дан Nkosi 16 January 2019 в 16:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: