Impostare un timeout ad una richiesta HTTP in WinRT

di Alessio Leoncini, in WinRT 8.1,

La classe HttpClient in Windows.Web.Http espone una serie di metodi per integrarsi al meglio con le API asincrone di WinRT.
Ad esempio, il metodo GetAsync restituisce un IAsyncOperationWithProgress e tra gli extension method presenti nel runtime per questo oggetto abbiamo AsTask che converte in Task l'IAsyncOperation.

Tra gli overload del metodo possiamo passare come parametro un oggetto di tipo CancellationToken con cui possiamo controllare il task asincrono. Il CancellationToken è esposto come proprietà di CancellationTokenSource oltre a vari metodi, ad esempio con CancelAfter possiamo impostare il tempo in cui il task sarà cancellato dal momento della sua creazione.

var cts = new CancellationTokenSource();
cts.CancelAfter(2000);
var client = new HttpClient();
var response = await client.GetAsync(new Uri("https://www.winrtitalia.com")).AsTask(cts.Token);

if (!response.IsSuccessStatusCode)
{
  //messaggio
  return;
}

var txt = await response.Content.ReadAsStringAsync();

Nell'esempio, la chiamata HTTP sarà annullata se la sua risposta non arriverà entro il tempo impostato come timeout nel metodo CancelAfter.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi