HttpService.cs
3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using HHECS.BllModel;
using HHECS.DAQClient.Dto;
using HHECS.DAQClient.Model;
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 jsonSerializeOptions = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
PropertyNameCaseInsensitive = true
};
private readonly JsonSerializerOptions jsonDeserializeOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
public HttpService(HttpClient httpClient)
{
//HttpClientHandler clientHandler = new HttpClientHandler();
//clientHandler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => { return true; };
//clientHandler.SslProtocols = SslProtocols.None;
//httpClient = new HttpClient(clientHandler);
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<EquipmentDataQueue> equipmentDataQueues)
{
try
{
var data = equipmentDataQueues.Select(x => new EquipmentDataDto
{
Plmeid = x.Id == Guid.Empty ? Guid.NewGuid() : x.Id,
EquipmentSN = x.EquipmentCode,
Reported = JsonSerializer.Deserialize<List<TagItem>>(x.Reported),
Version = x.Version,
Timestamp = x.SourceTimestamp,
}).ToList();
var json = JsonSerializer.Serialize(data, jsonSerializeOptions);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var result = _httpClient.PostAsync("Equipment/SendEquipmentData", stringContent).Result;
var resultContent = result.Content.ReadAsStringAsync().Result;
if (result.IsSuccessStatusCode)
{
return JsonSerializer.Deserialize<BllResult>(resultContent, jsonDeserializeOptions);
}
else
{
if (string.IsNullOrEmpty(resultContent))
{
resultContent = result.ReasonPhrase;
}
return BllResultFactory.Error($"推送失败:{resultContent}");
}
}
catch (Exception ex)
{
return BllResultFactory.Error(ex.Message);
}
}
}
}