using System.Collections; using System.Collections.Generic; using UnityEngine; using Best.HTTP; using System; using Newtonsoft.Json; using System.Text; using WI; using System.Linq; /// /// Option.ini /// /// --httpSetting-- /// apiKey="" /// httpServer="" /// kpiAPI="" /// predictionTimeAPI="" /// /// --mqttClientSetting-- /// brokerAddress="" /// brokerPort="" /// topics="a","b","c"... /// --mqttBrokerSetting-- /// address="" /// port="" /// topics="a","b","c"... /// /// --defaultInfo-- /// machineInfoPath="" /// /// --controllerOption-- /// forward="" /// backward="" /// left="" /// right="" /// zoomSpeed="" /// moveSpeed="" /// sprintSpeed="" /// rotateSpeed="" /// /// --graphicOption-- /// shadow=true /// uiEffect=true /// uiAnimation=true /// uiResolution=1.0 /// machineEffect=true /// machineAnimation=true /// graphicQuality=1 /// namespace CHN { public class HTTPRequester : Protocol, ISingle, IOptionable { public Action onMachineKPIData; [OptionSection] string httpSetting; [OptionKey] string apiKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiZW1haWwiOiJjaHVuaWxlbmdAdXZjLmNvLmtyIiwiZ3JvdXBJZCI6MiwiZ3JvdXBDb2RlIjoiY2h1bmlsZW5nIiwicm9sZSI6IlRlbmFudEFkbWluIiwibmFtZSI6IuyynOydvOyXlOyngOuLiOyWtOungSIsImxpY2Vuc2UiOiJidXNpbmVzcyIsInBob25lIjoiMDEwMDAwMDAwMDAiLCJpYXQiOjE3MTgxNjI2MjksImV4cCI6MjAzMzUyMjYyOX0.zdlNswh_88M44oxs1HuaoA-rFdUoS50tHQ1-xNqWzIc"; [OptionKey] string httpServer = "http://106.247.236.204:8863"; [OptionKey] string kpiAPI = "/api/usp_ppmr020/list/facilityKpi"; public void Start() { HTTPConnect(); } public void HTTPConnect() { var path = httpServer + kpiAPI; var yesterday = DateTime.Now.AddDays(-1); var yesterdayTime = yesterday.ToString("yyyyMMdd"); var todayTime = DateTime.Now.ToString("yyyyMMdd"); var query = $"?&p_frdt={yesterdayTime}&p_todt={todayTime}&limit={100}"; var request = HTTPRequest.CreateGet(path + query, RequestFinishedCallback); request.AddHeader("access-token", apiKey); request.Send(); } private void RequestFinishedCallback(HTTPRequest req, HTTPResponse resp) { switch (req.State) { case HTTPRequestStates.Finished: if (resp.IsSuccess) { isSuccess = true; errorMessage = "Connected"; var payload = Encoding.UTF8.GetString(resp.Data); var response = JsonConvert.DeserializeObject(payload); onMachineKPIData?.Invoke(response); } else { isSuccess = false; errorMessage = $"Server sent an error: {resp.StatusCode}-{resp.Message}"; } break; default: isSuccess = false; errorMessage = $"Request state: {req.State}"; break; } } } }