XiaomiMESHttp_UpLoadFile.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Security.Policy;
  6. using System.Text;
  7. using static MainForm.ClassFile.XiaomiAPI.XiaomiMqttClient_Extend;
  8. using static MainForm.ClassFile.XiaomiAPI_MES.XiaomiMESHttp_StationInbound;
  9. namespace MainForm.ClassFile.XiaomiAPI_MES
  10. {
  11. /// <summary>
  12. /// 小米MES - 进站接⼝
  13. /// 接口地址:
  14. /// 接口方法:UnitConfirmDataSetIn
  15. /// </summary>
  16. public class XiaomiMESHttp_UpLoadFile : XiaomiMESHttp_X5
  17. {
  18. #region 变量
  19. /// <summary>
  20. /// 接口地址
  21. /// </summary>
  22. protected new static string UpFileUrl { set; get; } = GlobalContext.UpFileUrl;
  23. /// <summary>
  24. /// 接口方法
  25. /// </summary>
  26. protected new static string Method { set; get; } = "UploadMqtt";
  27. #endregion 变量
  28. /// <summary>
  29. /// 小米上传文档
  30. /// </summary>
  31. /// <param name="requestBody"></param>
  32. /// <returns></returns>
  33. public static XmMES_UpFile_Response UpFilePost(XmMES_UpFile_Request_Body body)
  34. {
  35. XmMES_UpFile_Response stationInResponse = new XmMES_UpFile_Response();
  36. string bodyJson = JsonConvert.SerializeObject(body);
  37. XiaomiMES_X5RequestHeader header = new XiaomiMES_X5RequestHeader();
  38. header.appid = Appid; // 系统分配的应⽤ID
  39. header.method = Method; // API接⼝名称
  40. header.sign = GetSign_Up(Appid, bodyJson, Appkey); // md5签名
  41. header.url = UpFileUrl; // 接⼝地址
  42. //XmMES_StationInRequest request = new XmMES_StationInRequest();
  43. //request.header = header;
  44. //request.body = body;
  45. //string data = JsonConvert.SerializeObject(request);
  46. //转base64
  47. dynamic requestData = new { header = header, body = bodyJson };
  48. var serializedBody = JsonConvert.SerializeObject(requestData);
  49. var base64EncodedBody = Convert.ToBase64String(Encoding.UTF8.GetBytes(serializedBody));
  50. XiaomiMES_X5Response response = Post(UpFileUrl, base64EncodedBody);
  51. // ZS保存日志
  52. stationInResponse.header = response.header;
  53. string responseBody = response.body;
  54. stationInResponse.body = JsonConvert.DeserializeObject<XmMES_UpFile_Response_Body>(responseBody);
  55. return stationInResponse;
  56. }
  57. #region 入参
  58. /// <summary>
  59. /// 上传图片 - 入参
  60. /// </summary>
  61. public class XmMES_UpFile_Request
  62. {
  63. /// <summary>
  64. /// 进站接⼝ - 入参 - header
  65. /// </summary>
  66. public XiaomiMES_X5RequestHeader header { get; set; } = new XiaomiMES_X5RequestHeader();
  67. /// <summary>
  68. /// 进站接⼝ - 入参 - body
  69. /// </summary>
  70. public XmMES_UpFile_Request_Body body { get; set; } = new XmMES_UpFile_Request_Body();
  71. }
  72. /// <summary>
  73. /// 进站接⼝ - 入参 - Body 实体
  74. /// </summary>
  75. public class XmMES_UpFile_Request_Body
  76. {
  77. /// <summary>
  78. /// ⽂件所属包 格式为:/A/B,如/home/work/app
  79. /// </summary>
  80. public string bucket { get; set; } = string.Empty;
  81. /// <summary>
  82. /// ⽂件名
  83. /// </summary>
  84. public string name { get; set; } = string.Empty;
  85. /// <summary>
  86. /// ⽂件内容
  87. /// </summary>
  88. public string file { get; set; } = string.Empty;
  89. /// <summary>
  90. /// ⽂件唯⼀标识 可选项,⽤于⾃⾏⽣成⽂件标识符,⽂件服务后台会进⾏判重
  91. /// </summary>
  92. public string uuid { get; set; } = string.Empty;
  93. /// <summary>
  94. /// 可选项,⽤于校验⽂件上传是否正确
  95. /// </summary>
  96. public string md5 { get; set; } = string.Empty;
  97. /// <summary>
  98. /// 是否上云
  99. /// </summary>
  100. public bool uploadCloud { get; set; } = false;
  101. /// <summary>
  102. /// 是否通知mqtt
  103. /// </summary>
  104. public bool informMqtt { get; set; } = false;
  105. /// <summary>
  106. /// 发送通知时的负载
  107. /// </summary>
  108. public string mqttPayload { get; set; } = string.Empty;
  109. }
  110. #endregion
  111. #region 出参
  112. /// <summary>
  113. /// 上传图片 - 出参
  114. /// </summary>
  115. public class XmMES_UpFile_Response
  116. {
  117. /// <summary>
  118. /// header字段描述
  119. /// </summary>
  120. public XiaomiMES_X5ResponseHeader header { get; set; } = new XiaomiMES_X5ResponseHeader();
  121. /// <summary>
  122. /// body字段描述
  123. /// </summary>
  124. public XmMES_UpFile_Response_Body body { get; set; } = new XmMES_UpFile_Response_Body();
  125. }
  126. /// <summary>
  127. /// 出参
  128. /// </summary>
  129. public class XmMES_UpFile_Response_Body
  130. {
  131. /// <summary>
  132. /// 关键参数代码
  133. /// 200:成功
  134. /// 400:参数错误
  135. /// 500:服务器内部错误
  136. /// </summary>
  137. public string code { get; set; } = string.Empty;
  138. /// <summary>
  139. /// 关键参数msg
  140. /// </summary>
  141. public string msg { get; set; } = string.Empty;
  142. /// <summary>
  143. /// 关键参数值,如果是⽂件,这⾥是下载⽂件的url
  144. /// </summary>
  145. public UploadResult data { get; set; } = new UploadResult();
  146. }
  147. public class UploadResult
  148. {
  149. public string uuid { get; set; } = string.Empty;
  150. }
  151. #endregion 出参
  152. }
  153. }