示例#1
0
        public async Task <T> GetAsync <T>(string uri, object commonParam, object filter, int timeout, params object[] listParam)
        {
            T result = default(T);

            if (!this.Check())
            {
                return(result);
            }
            using (var httpClient = new HttpClient())
            {
                string requestUrl = "";
                this.RequestBuilder(httpClient, uri, timeout, ref requestUrl, listParam);
                ApiParam apiParam = new ApiParam();
                if (filter != null || commonParam != null)
                {
                    apiParam.CommonParam = commonParam;
                    apiParam.ApiData     = filter;
                    string param = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(apiParam)));
                    requestUrl += string.Format("{0}={1}", ApiConfig.API_PARAM, param);
                }

                HttpResponseMessage responseMessage = await httpClient.GetAsync(requestUrl).ConfigureAwait(false);

                if (!responseMessage.IsSuccessStatusCode)
                {
                    LogSystem.Error(String.Format("Loi khi goi api: {0}/{1} " +
                                                  "\nStatusCode: {2} " +
                                                  "\nInput: {3}{4}", httpClient.BaseAddress.AbsoluteUri, uri, responseMessage.StatusCode.GetHashCode(), JsonConvert.SerializeObject(filter), JsonConvert.SerializeObject(commonParam)));
                    throw new ApiException(responseMessage.StatusCode);
                }

                string responseData = responseMessage.Content.ReadAsStringAsync().Result;
                try
                {
                    result = JsonConvert.DeserializeObject <T>(responseData);
                }
                catch (Exception ex)
                {
                    LogSystem.Error("responseData: " + responseData);
                    LogSystem.Error("requestUrl: " + requestUrl);
                    LogSystem.Error(LogUtil.TraceData("apiParam", apiParam));
                    throw ex;
                }
            }
            return(result);
        }
示例#2
0
        public T Post <T>(string uri, object commonParam, object data, int timeount, params object[] listParam)
        {
            T result = default(T);

            if (!this.Check())
            {
                return(result);
            }

            using (var httpClient = new HttpClient())
            {
                string requestUrl = "";
                this.RequestBuilder(httpClient, uri, timeount, ref requestUrl, listParam);
                ApiParam apiParam = new ApiParam();
                if (data != null || commonParam != null)
                {
                    apiParam.ApiData     = data;
                    apiParam.CommonParam = commonParam;
                }

                HttpResponseMessage responseMessage = httpClient.PostAsJsonAsync(requestUrl, apiParam).Result;
                if (!responseMessage.IsSuccessStatusCode)
                {
                    LogSystem.Error(String.Format("Loi khi goi api: {0}/{1} " +
                                                  "\nStatusCode: {2} " +
                                                  "\nInput: {3}", httpClient.BaseAddress.AbsoluteUri, uri, responseMessage.StatusCode.GetHashCode(), JsonConvert.SerializeObject(data)));
                    throw new ApiException(responseMessage.StatusCode);
                }

                string responseData = responseMessage.Content.ReadAsStringAsync().Result;
                try
                {
                    result = JsonConvert.DeserializeObject <T>(responseData);
                }
                catch (Exception ex)
                {
                    LogSystem.Error("responseData: " + responseData);
                    LogSystem.Error("requestUrl: " + requestUrl);
                    LogSystem.Error(LogUtil.TraceData("apiParam", apiParam));
                    throw ex;
                }
            }
            return(result);
        }