8

Cách đặt thuộc tính Thời gian chờ thành hoạt động HttpClient. Mẫu mã tôi đã sử dụng ở bên dưới.Cách đặt thời gian chờ cho hoạt động yêu cầu máy khách http trong 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) 
    { 
    } 
} 

Trả lời

8

Sử dụng một 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

Các bạn đã thử một thời gian chờ> 60 giây? (ví dụ của bạn sử dụng 2 giây) Tôi đã cố gắng thiết lập 10 phút như vậy ..... var response = await httpClient.PutAsync (hoạt động, tải trọng, mới CancellationTokenSource (600000) .Token); Nhưng điều này trả về 404 NOT FOUND sau 60 giây. – iupchris10

+0

@ iupchris10 Tôi biết nó giống như 2 năm quá muộn, nhưng 60 giây là ít hơn 10 phút. Nếu bạn có mã phản hồi (nghĩa là máy chủ đã _responded_) thì yêu cầu của bạn chưa hết thời gian chờ. Tôi sẽ _expect_ hành vi này vì đó là hành vi chính xác. Mã ở trên sẽ hủy yêu cầu của bạn sau 10 phút NẾU không có phản hồi/phản hồi mất quá nhiều thời gian. Đó không phải là trường hợp trong ví dụ của bạn. – john

Các vấn đề liên quan