2013-08-02 18 views
7

È possibile annullare HttpClient GET web request in Windows 8. Sto cercando una soluzione per annullare la mia richiesta Web se l'utente preme il tasto indietro dalla pagina. Nella mia app sto usando un static class per la creazione di una richiesta web.Come annullare la richiesta Web HttpClient GET

Alos sto usando MVVM Light e static viewmodels all'interno della app.

Nella situazione attuale, anche se l'utente premere il tasto indietro, il vm rimanere in vita e raggiunge ed esegue nel VM indietro la chiamata.

Quindi sto cercando una soluzione per annullare la richiesta sulla stampa posteriore.

+0

È possibile utilizzare CancellationToken per l'annullamento metodi asincroni. È un modo di farlo, potrebbe essere altri. – VasileF

+0

Puoi aggiungere il modo di cancellare la richiesta con CancelationToken, come risposta. Quindi lo contrassegnerò come risposta –

risposta

5

Prova questa

protected async override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    await HttpGetRequest(); 
} 

public CancellationTokenSource cts = new CancellationTokenSource(); 
private async Task HttpGetRequest() 
{ 
    try 
    { 
     DateTime now = DateTime.Now; 
     var httpClient = new HttpClient(); 
     var message = new HttpRequestMessage(HttpMethod.Get, "https://itunes.apple.com/us/rss/toppaidapplications/limit=400/genre=6000/json"); 
     var response = await httpClient.SendAsync(message, cts.Token); 
     System.Diagnostics.Debug.WriteLine("HTTP Get request completed. Time taken : " + (DateTime.Now - now).TotalSeconds + " seconds."); 
    } 
    catch (TaskCanceledException) 
    { 
     System.Diagnostics.Debug.WriteLine("HTTP Get request canceled."); 
    } 
} 

private void btnCancel_Click(object sender, RoutedEventArgs e) 
{ 
    cts.Cancel(); 
} 
+0

Si noti che per il runtime di Windows 8.1 le cose hanno cambiato "solo un po '" bit - [richiesta di annullamento del client http in Windows 8.1] (http://stackoverflow.com/questions/23457797/http- client-cancel-request-in-windows-8-1), quindi la risposta di currect è accurata solo per il runtime in Windows 8.0. – Sevenate

+0

OP ha richiesto anche solo W8. Guarda i tag della domanda. – Xyroid

+1

Ho visto i tag di sicuro e la tua risposta è perfetta per Windows 8. Ho appena aggiunto un commento per coloro che, come me, potrebbero guardare le informazioni simili per le ultime (finora) Windows e indirizzarle nel posto appropriato. – Sevenate

Problemi correlati