HttpClientFactory.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Microsoft.Extensions.DependencyInjection;
  2. using System.Net.Http;
  3. using System.Net.Http.Headers;
  4. using System.Reflection;
  5. namespace FastGithub.Scanner
  6. {
  7. /// <summary>
  8. /// HttpClient工厂
  9. /// </summary>
  10. [Service(ServiceLifetime.Singleton)]
  11. sealed class HttpClientFactory
  12. {
  13. /// <summary>
  14. /// 程序集版本信息
  15. /// </summary>
  16. private static readonly AssemblyName assemblyName = typeof(HttpClientFactory).Assembly.GetName();
  17. /// <summary>
  18. /// 请求头的默认UserAgent
  19. /// </summary>
  20. private readonly static ProductInfoHeaderValue defaultUserAgent = new(assemblyName.Name ?? "FastGithub", assemblyName.Version?.ToString());
  21. /// <summary>
  22. /// 创建httpClient
  23. /// </summary>
  24. /// <returns></returns>
  25. public HttpClient Create(bool allowAutoRedirect = true)
  26. {
  27. var httpClient = new HttpClient(new HttpClientHandler
  28. {
  29. Proxy = null,
  30. UseProxy = false,
  31. AllowAutoRedirect = allowAutoRedirect
  32. });
  33. httpClient.DefaultRequestHeaders.Accept.TryParseAdd("*/*");
  34. httpClient.DefaultRequestHeaders.UserAgent.Add(defaultUserAgent);
  35. return httpClient;
  36. }
  37. }
  38. }