正確使用 HttpClient
使用 HttpClient 注意事項
- HttpClient默認最大并發連接數是2
- 本機測驗(被請求的WebApi部署在本機)HttpClient不會被限制最大并發連接數
- 使用HttpClient要寫個工廠類,因為HttpClient不能頻繁創建
- 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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/539275.html
標籤:.NET技术
上一篇:C#基礎總結