2013-08-02 10 views
7

Czy można anulować HttpClient GET web request in Windows 8. Szukam rozwiązania, aby anulować moją żądanie sieci, jeśli użytkownik naciśnij klawisz Wstecz od strony. W mojej aplikacji używam static class do tworzenia żądania internetowego.Jak anulować HttpClient GET Web request

Alos używam MVVM Light i static viewmodels wewnątrz aplikacji.

W obecnej sytuacji, nawet jeśli użytkownik nacisnął przycisk Wstecz, vm pozostanie przy życiu, a połączenie zwrotne osiągnie i wykona się w VM.

Poszukuję rozwiązania, aby anulować prośbę o ponowne naciśnięcie.

+0

Można użyć CancellationToken za anulowanie metod async. To sposób na zrobienie tego, mogą być inni. – VasileF

+0

Czy możesz dodać sposób anulowania żądania za pomocą CancelationToken, jako odpowiedzi. Następnie oznaczę to jako odpowiedź –

Odpowiedz

5

Spróbuj

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

Należy pamiętać, że w środowisku wykonawczym systemu Windows 8.1 rzeczy zmieniły nieco "tylko trochę" - [żądanie anulowania klienta HTTP w Windows 8.1] (http://stackoverflow.com/questions/23457797/http- client-cancel-request-in-windows-8-1), więc poprawna odpowiedź jest dokładna tylko dla środowiska wykonawczego w Windows 8.0. – Sevenate

+0

OP poprosił również tylko o W8. Zobacz tagi pytań. – Xyroid

+1

Widziałem tagi na pewno, a twoja odpowiedź jest idealnie dobra dla Windows 8. Po prostu dodałem komentarz dla tych, którzy lubią mnie, mogą wyglądać podobnie do najnowszych (jak dotąd) Windowsów i wskazać im odpowiednie miejsce. – Sevenate

Powiązane problemy