Example #1
0
        public TResponse Post <TResponse>(IReturn <TResponse> request, string path = null)
        {
            string url         = BaseUrl.TrimEnd('/') + "/" + (path ?? request.GetPath().TrimStart('/'));
            var    httprequest = (HttpWebRequest)WebRequest.Create(url);

            httprequest.Method = "POST";

            try
            {
                AddCommonHeaders(httprequest);

                SetTimeoutProxyAndCookies(httprequest);

                byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(request));
                httprequest.ContentLength = data.Length;

#if DEBUG
                var requestId = Guid.NewGuid().ToString();
                System.Diagnostics.Debug.WriteLine($"{requestId} - {httprequest.Method} {url} request=> {JsonConvert.SerializeObject(request)}", "RestClient");
#endif

                using (Stream stream = httprequest.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length); // Sending the data
                }

                string responseStr = string.Empty;

                using (HttpWebResponse response = (HttpWebResponse)httprequest.GetResponse())
                {
                    CollectCookies(response);
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        using (StreamReader readStream = new StreamReader(responseStream, Encoding.GetEncoding(Encoding.UTF8.CodePage)))
                        {
                            responseStr = readStream.ReadToEnd();

#if DEBUG
                            System.Diagnostics.Debug.WriteLine($"{requestId} - {httprequest.Method} {url} response=> {responseStr}", "RestClient");
#endif

                            readStream.Close();
                        }
                        responseStream.Close();
                    }
                    response.Close();
                }
                return(JsonConvert.DeserializeObject <TResponse>(responseStr));
            }
            catch (Exception ex)
            {
                logger.WriteLog("RestClient error", ex, Level.Error);
            }
            return(default(TResponse));
        }
Example #2
0
        public async Task <TResponse> GetAsync <TResponse>(IReturn <TResponse> request, string path = null)
        {
            string url         = BaseUrl.TrimEnd('/') + "/" + (path ?? request.GetPath()).TrimStart('/');
            var    httprequest = (HttpWebRequest)WebRequest.Create(url);

            httprequest.Method = "GET";

            try
            {
                AddCommonHeaders(httprequest);

                SetTimeoutProxyAndCookies(httprequest);

                string responseStr = string.Empty;

#if DEBUG
                var requestId = Guid.NewGuid().ToString();
                System.Diagnostics.Debug.WriteLine($"{requestId} - {httprequest.Method} {url}", "RestClient");
#endif

                using (HttpWebResponse response = (HttpWebResponse)(await httprequest.GetResponseAsync()))
                {
                    CollectCookies(response);
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        using (StreamReader readStream = new StreamReader(responseStream, Encoding.GetEncoding(Encoding.UTF8.CodePage)))
                        {
                            responseStr = await readStream.ReadToEndAsync();

#if DEBUG
                            System.Diagnostics.Debug.WriteLine($"{requestId} - {httprequest.Method} {url} response=> {responseStr}", "RestClient");
#endif
                            readStream.Close();
                        }
                        responseStream.Close();
                    }
                    response.Close();
                }
                return(JsonConvert.DeserializeObject <TResponse>(responseStr));
            }
            catch (Exception ex)
            {
                logger.WriteLog("RestClient error", ex, Level.Error);
            }
            return(default(TResponse));
        }