ApiRequestService.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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).WithTimeout(8) ;
  37. if (flurlRequest == null)
  38. {
  39. return (false, "flurlRequest 空指针!");
  40. }
  41. IFlurlResponse flurResponse = default;
  42. if (requsetMode == RequsetModeEnum.Delete)
  43. {
  44. flurResponse = await flurlRequest.DeleteAsync();
  45. }
  46. if (requsetMode == RequsetModeEnum.Post)
  47. {
  48. if(obj == null)
  49. {
  50. flurResponse = await flurlRequest.PostAsync();
  51. }
  52. else
  53. {
  54. flurResponse = await apiUrl.PostJsonAsync(obj);
  55. }
  56. }
  57. if (requsetMode == RequsetModeEnum.Get)
  58. {
  59. flurResponse = await flurlRequest.GetAsync();
  60. }
  61. if (flurResponse == null)
  62. {
  63. return (false, "flurResponse 空指针!");
  64. }
  65. var result = await flurResponse.GetStringAsync();
  66. if (string.IsNullOrWhiteSpace(result))
  67. {
  68. return (false, "result 空指针!");
  69. }
  70. return (true, result);
  71. }
  72. catch (Exception ex)
  73. {
  74. _logger.LogError(ex, $"接口请求异常【ApiRequestService 》RequestAsync】:{ex.Message}");
  75. return (false, ex.Message);
  76. }
  77. }
  78. }
  79. }