.NET正确使用HttpClient

使用 HttpClient 注意事项

  1. HttpClient默认最大并发连接数是2

  2. 本机测试(被请求的WebApi部署在本机)HttpClient不会被限制最大并发连接数

  3. 使用HttpClient要写个工厂类,因为HttpClient不能频繁创建

  4. HttpClient类提供的方法是线程安全的.

HttpClient 工厂类

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;
namespace Factory{    /// <summary>    /// HttpClient工厂类    /// 注意:    /// 1. HttpClient默认最大并发连接数是2    /// 2. 本机测试HttpClient不会被限制最大并发连接数    /// </summary>    public class HttpClientFactory    {        private int _httpClientCount;
        private readonly HttpClient[] _httpClientArray;
        private int _index = -1;
        private readonly object _lock = new object();
        private static readonly HttpClientFactory _instance = new HttpClientFactory();
        public static HttpClientFactory Instance        {            get            {                return _instance;            }        }
        public HttpClientFactory(int httpClientCount = 50)        {            _httpClientCount = httpClientCount;            _httpClientArray = new HttpClient[_httpClientCount];            for (int i = 0; i < _httpClientCount; i++)            {                _httpClientArray[i] = new HttpClient();            }        }
        public HttpClient Get()        {            lock (_lock)            {                _index++;                if (_index == _httpClientCount)                {                    _index = 0;                }                return _httpClientArray[_index];            }        }    }}

如何使用

string url = "http://192.168.31.11:5028/Test/Get";HttpClient httpClient = HttpClientFactory.Instance.Get();string strResult = await (await httpClient.GetAsync(url)).Content.ReadAsStringAsync();