ApiRequestService.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using Flurl.Http;
  2. using IMCS.CCS.Entitys;
  3. using Microsoft.Extensions.Logging;
  4. using System;
  5. using System.Threading.Tasks;
  6. namespace IMCS.CCS.Service.Impl
  7. {
  8. /// <summary>
  9. /// WebApi 请求服务
  10. /// </summary>
  11. public class ApiRequestService : IApiRequestService
  12. {
  13. private readonly ILogger<IApiRequestService> _logger;
  14. public ApiRequestService(ILogger<IApiRequestService> logger)
  15. {
  16. _logger = logger;
  17. }
  18. /// <summary>
  19. /// 请求数据
  20. /// </summary>
  21. /// <param name="requsetMode"></param>
  22. /// <param name="apiUrl"></param>
  23. /// <param name="headerKeyValue"></param>
  24. /// <returns></returns>
  25. public async Task<(bool IsSuccess, string Message)> RequestAsync(RequsetModeEnum requsetMode, string apiUrl, object obj, string headerKeyValue = null)
  26. {
  27. try
  28. {
  29. var headerKey = "IMCS_CCS.Job.Request";
  30. var headerValue = "Success";
  31. if (!string.IsNullOrWhiteSpace(headerKeyValue) && headerKeyValue.Contains("="))
  32. {
  33. headerKey = headerKeyValue.Split('=')[0];
  34. headerValue = headerKeyValue.Split('=')[1];
  35. }
  36. IFlurlRequest flurlRequest = apiUrl.WithHeader(headerKey, headerValue);
  37. flurlRequest.WithTimeout(10);
  38. if (flurlRequest == null)
  39. {
  40. return (false, "flurlRequest 空指针!");
  41. }
  42. IFlurlResponse flurResponse = default;
  43. if (requsetMode == RequsetModeEnum.Delete)
  44. {
  45. flurResponse = await flurlRequest.DeleteAsync();
  46. }
  47. if (requsetMode == RequsetModeEnum.Post)
  48. {
  49. if(obj == null)
  50. {
  51. flurResponse = await flurlRequest.PostAsync();
  52. }
  53. else
  54. {
  55. flurResponse = await apiUrl.PostJsonAsync(obj);
  56. }
  57. }
  58. if (requsetMode == RequsetModeEnum.Get)
  59. {
  60. flurResponse = await flurlRequest.GetAsync();
  61. }
  62. if (flurResponse == null)
  63. {
  64. return (false, "flurResponse 空指针!");
  65. }
  66. var result = await flurResponse.GetStringAsync();
  67. if (string.IsNullOrWhiteSpace(result))
  68. {
  69. return (false, "result 空指针!");
  70. }
  71. return (true, result);
  72. }
  73. catch (Exception ex)
  74. {
  75. _logger.LogError(ex, $"接口请求异常【ApiRequestService 》RequestAsync】:{ex.Message}");
  76. return (false, ex.Message);
  77. }
  78. }
  79. }
  80. }