using Flurl.Http; using IMCS.CCS.Entitys; using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; namespace IMCS.CCS.Service.Impl { /// /// WebApi 请求服务 /// public class ApiRequestService : IApiRequestService { private readonly ILogger _logger; public ApiRequestService(ILogger logger) { _logger = logger; } /// /// 请求数据 /// /// /// /// /// public async Task<(bool IsSuccess, string Message)> RequestAsync(RequsetModeEnum requsetMode, string apiUrl, object obj, string headerKeyValue = null) { try { var headerKey = "IMCS_CCS.Job.Request"; var headerValue = "Success"; if (!string.IsNullOrWhiteSpace(headerKeyValue) && headerKeyValue.Contains("=")) { headerKey = headerKeyValue.Split('=')[0]; headerValue = headerKeyValue.Split('=')[1]; } IFlurlRequest flurlRequest = apiUrl.WithHeader(headerKey, headerValue).WithTimeout(8) ; if (flurlRequest == null) { return (false, "flurlRequest 空指针!"); } IFlurlResponse flurResponse = default; if (requsetMode == RequsetModeEnum.Delete) { flurResponse = await flurlRequest.DeleteAsync(); } if (requsetMode == RequsetModeEnum.Post) { if(obj == null) { flurResponse = await flurlRequest.PostAsync(); } else { flurResponse = await apiUrl.PostJsonAsync(obj); } } if (requsetMode == RequsetModeEnum.Get) { flurResponse = await flurlRequest.GetAsync(); } if (flurResponse == null) { return (false, "flurResponse 空指针!"); } var result = await flurResponse.GetStringAsync(); if (string.IsNullOrWhiteSpace(result)) { return (false, "result 空指针!"); } return (true, result); } catch (Exception ex) { _logger.LogError(ex, $"接口请求异常【ApiRequestService 》RequestAsync】:{ex.Message}"); return (false, ex.Message); } } } }