8

Come impostare la proprietà Timeout sull'operazione HttpClient. L'esempio di codice che ho usato è sotto.Come impostare il timeout per l'operazione di richiesta del client http in windows phone 8.1/Windows 8.1

public HttpClient httpClient; 
public CancellationTokenSource cts; 

Public void SendRequest(addressUri,postrequestbody) 
{ 
    HttpHelper.CreateHttpClient(ref httpClient); 
    cts = new CancellationTokenSource(); 
    HttpRequestMessage msg = 
     new HttpRequestMessage(new HttpMethod("POST"), 
           new Uri(addressUri)); 
    msg.Content = new HttpStringContent(postrequestbody); 
    msg.Content.Headers.ContentType = 
     new HttpMediaTypeHeaderValue("application/json"); 
    HttpResponseMessage response = 
     await httpClient.SendRequestAsync(msg).AsTask(); 

    if (response.StatusCode == HttpStatusCode.Ok) 
    { 
    } 
} 

risposta

8

Utilizzare un CancellationToken:

try 
{ 
    CancellationTokenSource cts = new CancellationTokenSource(2000); // 2 seconds 
    HttpClient client = new HttpClient(); 
    HttpResponseMessage response = await 
     client.SendRequestAsync(request).AsTask(cts.Token); 
} 
catch (TaskCanceledException ex) 
{ 
    // Catch operation aborted ... 
} 
+0

Hai provato un timeout> 60 secondi? (il tuo esempio usa 2 secondi) Ho provato a impostare 10 minuti in questo modo ..... var response = attendi httpClient.PutAsync (operazione, payload, New CancellationTokenSource (600000) .Token); Ma questo restituisce 404 NON TROVATO dopo 60 secondi ancora. – iupchris10

+0

@ iupchris10 So che è come 2 anni troppo tardi, ma 60 secondi è inferiore a 10 minuti. Se si dispone di un codice di risposta (ad esempio, il server ha _responded_), la richiesta non è scaduta. Vorrei _ verificare questo comportamento poiché è il comportamento corretto. Il codice sopra cancellerà la tua richiesta dopo 10 minuti SE non c'è risposta/la risposta richiede troppo tempo. Questo non è il caso nel tuo esempio. – john