private RequestPtr SerializeDataAsync() { RequestPtr rawrequestPtr = new RequestPtr(); string jsonRequest = JsonConvert.SerializeObject(trackingRequest); rawrequestPtr.rawRequest = Encoding.UTF8.GetBytes(jsonRequest); return(rawrequestPtr); }
private IEnumerator SendTrackingRequest(RequestPtr rawrequestPtr, int tries) { if (tries >= 5) { //string path = Path.Combine(Application.persistentDataPath, "tracking.txt"); //using (TextWriter writer = File.CreateText(path)) //{ // //} } else { WWWForm webForm = new WWWForm(); using (UnityWebRequest unityWebRequest = UnityWebRequest.Post(trackingEndpoint, webForm)) { //Set headers unityWebRequest.SetRequestHeader("Content-Type", "application/json"); //Upload Handler to handle data unityWebRequest.uploadHandler = new UploadHandlerRaw(rawrequestPtr.rawRequest); unityWebRequest.uploadHandler.contentType = "application/json"; //Download handler unityWebRequest.downloadHandler = new DownloadHandlerBuffer(); // Send the request yield return(unityWebRequest.SendWebRequest()); //await response if (unityWebRequest.downloadHandler.text.Contains("success")) { UnityEngine.Debug.Log($"Sending Request - succeded: true"); } else { UnityEngine.Debug.Log($"Sending Request - succeded: false , Resending Request"); StartCoroutine(SendTrackingRequest(rawrequestPtr, tries++)); } } } }
/// <summary> /// Stop the tracker, send the data of to the server /// </summary> private async Task TrackingRequest() { RequestPtr rawrequestPtr = await Task.Run(() => SerializeDataAsync()); StartCoroutine(SendTrackingRequest(rawrequestPtr, 0)); }