public async Task <TResponse> ExcuteMe <TResponse>(RequestMethod requestMethod, string requestURL, AESRequestBaseModel requestParams, string token = "")
        {
            Exception exception = null;
            TResponse response  = default(TResponse);

            bool IsSuccess = false;

            try
            {
                var handler = new TimeoutHandler
                {
                    DefaultTimeout = TimeSpan.FromSeconds(Utils.API_REQUEST_TIMEOUT),
                    InnerHandler   = new HttpClientHandler()
                };

                using (var cts = new CancellationTokenSource())
                    using (var httpClient = new System.Net.Http.HttpClient(handler))
                    {
                        httpClient.Timeout = TimeSpan.FromSeconds(Utils.API_REQUEST_TIMEOUT);
                        if (!string.IsNullOrEmpty(token))
                        {
                            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
                        }

                        HttpResponseMessage httpResponse = null;
                        if (requestMethod == RequestMethod.GET)
                        {
                            var paramete = requestParams.Get_GetParamsRequest();
                            Debug.WriteLine(requestURL + "" + paramete);

                            httpResponse = await httpClient.GetAsync(requestURL + paramete, cts.Token);
                        }
                        else if (requestMethod == RequestMethod.POST)
                        {
                            var paramete = requestParams.Get_PostParamsRequest();
                            Debug.WriteLine(requestURL);
                            Debug.WriteLine("param {0} ", paramete);

                            httpResponse = await httpClient.PostAsync(requestURL, new StringContent(paramete, Encoding.UTF8, "application/json"), cts.Token);
                        }
                        else if (requestMethod == RequestMethod.PUT)
                        {
                            var paramete = requestParams.Get_PutParamsRequest();
                            Debug.WriteLine(requestURL);
                            Debug.WriteLine("param {0} ", paramete);

                            httpResponse = await httpClient.PostAsync(requestURL, new StringContent(paramete, Encoding.UTF8, "application/json"), cts.Token);
                        }

                        if (httpResponse.IsSuccessStatusCode)
                        {
                            var responseRaw = httpResponse.Content.ReadAsStringAsync().Result;
                            if (responseRaw.Length < 1000)
                            {
                                Debug.WriteLine("Response raw {0}", responseRaw);
                            }
                            else
                            {
                                Debug.WriteLine("Response raw {0}", responseRaw.Substring(0, 999));
                            }

                            response = await Task.Run(() => JsonConvert.DeserializeObject <TResponse>(responseRaw, jsonSerializerSettings));

                            try
                            {
                                var fack = response as AESResponseBaseModel;
                                if (fack.StatusCode == Utils.STATUSCODE_UNAUTHORIZE)
                                {
                                    LogicTokenExpired();
                                }
                            }
                            catch (Exception ex)
                            {
                                Debug.WriteLine(ex.StackTrace);
                            }

                            IsSuccess = true;
                        }
                        else
                        {
                            Debug.WriteLine("Response code {0}", httpResponse.StatusCode);
                        }
                    }
            }
            catch (Exception ex)
            {
                exception = ex;
                Debug.WriteLine("Parse to json error {0}", ex.StackTrace);
            }

            if (exception == null && IsSuccess)
            {
                return(response);
            }
            else
            {
                //throw exception;
                return(response);
                //return Task.FromResult<TResponse>(null);
            }
        }
 public async Task <TResponse> RequestPostAsync <TResponse>(string url, AESRequestBaseModel param, string token = "")
 {
     return(await ExcuteMe <TResponse>(RequestMethod.POST, url, param, token));
 }
Example #3
0
 public async Task <TResponse> RequestPostAsync <TResponse>(string url, AESRequestBaseModel param, string token = "")
 {
     return(await ConfigurationHttpClientRequest <TResponse>(RequestMethod.POST, url, param, token));
 }
Example #4
0
 protected async Task <TResponse> ConfigurationHttpClientRequest <TResponse>(RequestMethod requestMethod, string requestURL, AESRequestBaseModel requestParams, string token = "")
 {
     return(await ExcuteMe <TResponse>(requestMethod, requestURL, requestParams, GetSupportHandler(), token));
 }
Example #5
0
        public async Task <TResponse> RequestAsyncWithCredential <TResponse>(RequestMethod requestMethod, string url, AESRequestBaseModel param, string apiUsername, string apiPassword)
        {
            var handler = new TimeoutHandler
            {
                DefaultTimeout = TimeSpan.FromSeconds(Utils.API_REQUEST_TIMEOUT),
                InnerHandler   = new HttpClientHandler()
                {
                    Credentials = new System.Net.NetworkCredential(apiUsername, apiPassword)
                }
            };

            return(await ExcuteMe <TResponse>(requestMethod, url, param, handler, null));
        }