您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

141 行
6.1 KiB

  1. using JT808.Gateway.Abstractions;
  2. using JT808.Gateway.Abstractions.Dtos;
  3. using System;
  4. using System.Buffers.Text;
  5. using System.Collections.Generic;
  6. using System.Net.Http;
  7. using System.Text;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. namespace JT808.Gateway.WebApiClientTool
  11. {
  12. /// <summary>
  13. ///
  14. /// </summary>
  15. public class JT808HttpClient
  16. {
  17. /// <summary>
  18. ///
  19. /// </summary>
  20. public HttpClient HttpClient { get; }
  21. /// <summary>
  22. ///
  23. /// </summary>
  24. /// <param name="httpClient"></param>
  25. public JT808HttpClient(HttpClient httpClient)
  26. {
  27. HttpClient = httpClient;
  28. }
  29. /// <summary>
  30. /// 统一下发信息
  31. /// </summary>
  32. /// <param name="jT808UnificationSendRequestDto"></param>
  33. /// <returns></returns>
  34. public async ValueTask<JT808ResultDto<bool>> UnificationSend(JT808UnificationSendRequestDto jT808UnificationSendRequestDto)
  35. {
  36. var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.UnificationSend);
  37. request.Content = new StringContent(JsonSerializer.Serialize(jT808UnificationSendRequestDto));
  38. var response = await HttpClient.SendAsync(request);
  39. response.EnsureSuccessStatusCode();
  40. var data = await response.Content.ReadAsStreamAsync();
  41. var value = await JsonSerializer.DeserializeAsync<JT808ResultDto<bool>>(data);
  42. return value;
  43. }
  44. /// <summary>
  45. /// 会话服务集合
  46. /// </summary>
  47. /// <returns></returns>
  48. public async ValueTask<JT808ResultDto<List<JT808TcpSessionInfoDto>>> GetTcpSessionAll()
  49. {
  50. var request = new HttpRequestMessage(HttpMethod.Get, JT808GatewayConstants.JT808WebApiRouteTable.SessionTcpGetAll);
  51. var response = await HttpClient.SendAsync(request);
  52. response.EnsureSuccessStatusCode();
  53. var data = await response.Content.ReadAsStreamAsync();
  54. var value = await JsonSerializer.DeserializeAsync<JT808ResultDto<List<JT808TcpSessionInfoDto>>>(data);
  55. return value;
  56. }
  57. /// <summary>
  58. /// 会话服务-通过设备终端号查询对应会话信息
  59. /// </summary>
  60. /// <param name="terminalPhoneNo"></param>
  61. /// <returns></returns>
  62. public async ValueTask<JT808ResultDto<JT808TcpSessionInfoDto>> QueryTcpSessionByTerminalPhoneNo(string terminalPhoneNo)
  63. {
  64. var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.QueryTcpSessionByTerminalPhoneNo);
  65. request.Content = new StringContent(terminalPhoneNo);
  66. var response = await HttpClient.SendAsync(request);
  67. response.EnsureSuccessStatusCode();
  68. var data = await response.Content.ReadAsStreamAsync();
  69. var value = await JsonSerializer.DeserializeAsync<JT808ResultDto<JT808TcpSessionInfoDto>>(data);
  70. return value;
  71. }
  72. /// <summary>
  73. /// 会话服务-通过设备终端号移除对应会话
  74. /// </summary>
  75. /// <param name="terminalPhoneNo"></param>
  76. /// <returns></returns>
  77. public async ValueTask<JT808ResultDto<bool>> RemoveTcpByTerminalPhoneNo(string terminalPhoneNo)
  78. {
  79. var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.SessionRemoveByTerminalPhoneNo);
  80. request.Content = new StringContent(terminalPhoneNo);
  81. var response = await HttpClient.SendAsync(request);
  82. response.EnsureSuccessStatusCode();
  83. var data = await response.Content.ReadAsStreamAsync();
  84. var value = await JsonSerializer.DeserializeAsync<JT808ResultDto<bool>>(data);
  85. return value;
  86. }
  87. /// <summary>
  88. /// 会话服务集合
  89. /// </summary>
  90. /// <returns></returns>
  91. public async ValueTask<JT808ResultDto<List<JT808UdpSessionInfoDto>>> GetUdpSessionAll()
  92. {
  93. var request = new HttpRequestMessage(HttpMethod.Get, JT808GatewayConstants.JT808WebApiRouteTable.SessionUdpGetAll);
  94. var response = await HttpClient.SendAsync(request);
  95. response.EnsureSuccessStatusCode();
  96. var data = await response.Content.ReadAsStreamAsync();
  97. var value = await JsonSerializer.DeserializeAsync<JT808ResultDto<List<JT808UdpSessionInfoDto>>>(data);
  98. return value;
  99. }
  100. /// <summary>
  101. /// 会话服务-通过设备终端号查询对应会话信息
  102. /// </summary>
  103. /// <param name="terminalPhoneNo"></param>
  104. /// <returns></returns>
  105. public async ValueTask<JT808ResultDto<JT808UdpSessionInfoDto>> QueryUdpSessionByTerminalPhoneNo(string terminalPhoneNo)
  106. {
  107. var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.QueryUdpSessionByTerminalPhoneNo);
  108. request.Content = new StringContent(terminalPhoneNo);
  109. var response = await HttpClient.SendAsync(request);
  110. response.EnsureSuccessStatusCode();
  111. var data = await response.Content.ReadAsStreamAsync();
  112. var value = await JsonSerializer.DeserializeAsync<JT808ResultDto<JT808UdpSessionInfoDto>>(data);
  113. return value;
  114. }
  115. /// <summary>
  116. /// 会话服务-通过设备终端号移除对应会话
  117. /// </summary>
  118. /// <param name="terminalPhoneNo"></param>
  119. /// <returns></returns>
  120. public async ValueTask<JT808ResultDto<bool>> RemoveUdpByTerminalPhoneNo(string terminalPhoneNo)
  121. {
  122. var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.RemoveUdpByTerminalPhoneNo);
  123. request.Content = new StringContent(terminalPhoneNo);
  124. var response = await HttpClient.SendAsync(request);
  125. response.EnsureSuccessStatusCode();
  126. var data = await response.Content.ReadAsStreamAsync();
  127. var value = await JsonSerializer.DeserializeAsync<JT808ResultDto<bool>>(data);
  128. return value;
  129. }
  130. }
  131. }