HttpClient - Send a batch of requests

前端 未结 2 467
慢半拍i
慢半拍i 2020-12-13 08:01

I want to iterate a batch of requests, sending each one of them to an external API using HttpClient class.

  foreach (var MyRequest in RequestsBatch)
  {
            


        
2条回答
  •  醉话见心
    2020-12-13 08:28

    It doesn't look like you're actually running a seperate thread for each request. Try something like this:

    var taskList = new List>();
    
    foreach (var myRequest in RequestsBatch)
    {
        taskList.Add(GetResponse(endPoint, myRequest));
    }
    
    try
    {
        Task.WaitAll(taskList.ToArray());
    }
    catch (Exception ex)
    {
    }
    
    public Task GetResponse(string endPoint, string myRequest)
    {
        return Task.Run(() =>
            {
                HttpClient httpClient = new HttpClient();
    
                HttpResponseMessage response = httpClient.PostAsJsonAsync(
                     string.Format("{0}api/GetResponse", endpoint), 
                     myRequest, 
                     new CancellationTokenSource(TimeSpan.FromMilliseconds(5)).Token);
    
                JObject resultResponse = response.Content.ReadAsAsync();
            });
    }
    

提交回复
热议问题