HttpService.cs 1.78 KB
using HHECS.BllModel;
using HHECS.DAQClient.Dto;
using System.Configuration;
using System.Net.Http;
using System.Text;
using System.Text.Json;

namespace HHECS.DAQClient.Services
{
    internal class HttpService
    {
        private readonly HttpClient _httpClient;

        private readonly JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions
        {
            PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
        };

        public HttpService(HttpClient httpClient)
        {
            httpClient.BaseAddress = new Uri(ConfigurationManager.AppSettings["API"]!);
            httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
            httpClient.DefaultRequestHeaders.Add("User-Agent", "HHECS.DAQClient");
            _httpClient = httpClient;
        }

        /// <summary>
        /// 推送设备实时数据
        /// </summary>
        /// <param name="entity"></param>
        public BllResult SendEquipmentData(IEnumerable<EquipmentDataDto> entity)
        {
            var json = JsonSerializer.Serialize(entity, jsonSerializerOptions);
            var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
            var result = _httpClient.PostAsync("Api/Equipment/EquipmentData", stringContent).Result;
            var resultContent = result.Content.ReadAsStringAsync().Result;
            if (result.IsSuccessStatusCode)
            {
                return JsonSerializer.Deserialize<BllResult>(resultContent);
            }
            else
            {
                if (string.IsNullOrEmpty(resultContent))
                {
                    resultContent = result.ReasonPhrase;
                }
                return BllResultFactory.Error($"推送失败:{resultContent}");
            }
        }
    }
}