/// <summary> /// Makes an Asynchronous POST request to the Countly server. /// </summary> /// <param name="uri"></param> /// <param name="data"></param> /// <param name="contentType"></param> /// <param name="addToRequestQueue"></param> /// <returns></returns> private async Task <CountlyResponse> PostAsync(string uri, string data, bool addToRequestQueue = false) { var countlyResponse = new CountlyResponse(); try { if (addToRequestQueue) { throw new Exception("Request added to queue."); } var dataBytes = Encoding.UTF8.GetBytes(data); var request = (HttpWebRequest)WebRequest.Create(uri); request.ContentLength = dataBytes.Length; request.ContentType = "application/json"; request.Method = "POST"; using (var requestBody = request.GetRequestStream()) { await requestBody.WriteAsync(dataBytes, 0, dataBytes.Length); } using (var response = (HttpWebResponse)await request.GetResponseAsync()) using (var stream = response.GetResponseStream()) using (var reader = new StreamReader(stream)) { var res = await reader.ReadToEndAsync(); countlyResponse.IsSuccess = !string.IsNullOrEmpty(res); countlyResponse.Data = res; #if UNITY_EDITOR //Log to Unity Console if (_config.EnableConsoleErrorLogging) { Debug.Log(countlyResponse.IsSuccess); } #endif return(countlyResponse); } } catch (Exception ex) { addToRequestQueue = true; countlyResponse.ErrorMessage = ex.Message; } if (addToRequestQueue) { var requestModel = new CountlyRequestModel(false, uri, data, DateTime.UtcNow); AddRequestToQueue(requestModel); } return(countlyResponse); }
/// <summary> /// Makes an Asynchronous GET request to the Countly server. /// </summary> /// <param name="url"></param> /// <param name="addToRequestQueue"></param> /// <returns></returns> internal async Task <CountlyResponse> GetAsync(string url, bool addToRequestQueue = false) { var countlyResponse = new CountlyResponse(); try { if (addToRequestQueue) { throw new Exception("Request added to queue."); } var request = (HttpWebRequest)WebRequest.Create(url); using (var response = (HttpWebResponse)await request.GetResponseAsync()) using (var stream = response.GetResponseStream()) using (var reader = new StreamReader(stream)) { var res = await reader.ReadToEndAsync(); countlyResponse.IsSuccess = !string.IsNullOrEmpty(res); countlyResponse.Data = res; #if UNITY_EDITOR //Log to Unity Console if (_config.EnableConsoleErrorLogging) { Debug.Log(countlyResponse.IsSuccess); } #endif return(countlyResponse); } } catch (Exception ex) { addToRequestQueue = true; countlyResponse.ErrorMessage = ex.Message; } if (addToRequestQueue) { var requestModel = new CountlyRequestModel(true, url, null, DateTime.UtcNow); AddRequestToQueue(requestModel); } return(countlyResponse); }