/// <summary>
        /// 处理get请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="httpRequest"></param>
        /// <returns></returns>
        public HttpResponse <T> DoGet <T>(HttpRequest httpRequest)
        {
            int statusCode;

            try
            {
                //Console.WriteLine($"Wenli.Config.ApolloClient 正在开始请求{httpRequest.Url} ...");

                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(httpRequest.Url);
                req.Method = "GET";
                req.Headers["Authorization"] = _basicAuth;

                int timeout = httpRequest.Timeout;
                if (timeout <= 0)
                {
                    timeout = _timeOut;
                }

                int readTimeout = httpRequest.ReadTimeout;
                if (readTimeout <= 0 && readTimeout != Timeout.Infinite)
                {
                    readTimeout = _readTimeOut;
                }

                req.Timeout          = timeout;
                req.ReadWriteTimeout = readTimeout;

                using (HttpWebResponse res = (HttpWebResponse)req.BetterGetResponse())
                {
                    statusCode = (int)res.StatusCode;

                    //Console.WriteLine($"Wenli.Config.ApolloClient 请求{httpRequest.Url} 已完成,StatusCode:{statusCode}");

                    if (statusCode == 200)
                    {
                        using (var stream = new StreamReader(res.GetResponseStream(), Encoding.UTF8))
                        {
                            var content = stream.ReadToEnd();
                            T   body    = JSONHelper.DeserializeObject <T>(content);
                            return(new HttpResponse <T>(statusCode, body));
                        }
                    }

                    if (statusCode == 304 || statusCode == 404)
                    {
                        return(new HttpResponse <T>(statusCode));
                    }
                }
            }
            catch (Exception ex)
            {
                //Console.WriteLine($"Wenli.Config.ApolloClient Err:{ex.Message} type:{ex.GetType().Name}");

                throw new ApolloConfigException("Wenli.Config.ApolloClient Could not complete get operation,url:" + httpRequest.Url, ex);
            }

            throw new ApolloConfigStatusCodeException(statusCode, string.Format("Wenli.Config.ApolloClient Get operation failed for {0}", httpRequest.Url));
        }
Пример #2
0
        public HttpResponse <T> DoGet <T>(HttpRequest httpRequest)
        {
            int statusCode;

            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(httpRequest.Url);
                req.Method = "GET";
                req.Headers["Authorization"] = basicAuth;

                int timeout = httpRequest.Timeout;
                if (timeout <= 0 && timeout != Timeout.Infinite)
                {
                    timeout = m_configUtil.Timeout;
                }

                int readTimeout = httpRequest.ReadTimeout;
                if (readTimeout <= 0 && readTimeout != Timeout.Infinite)
                {
                    readTimeout = m_configUtil.ReadTimeout;
                }

                req.Timeout          = timeout;
                req.ReadWriteTimeout = readTimeout;

                using (HttpWebResponse res = (HttpWebResponse)req.BetterGetResponse())
                {
                    statusCode = (int)res.StatusCode;
                    if (statusCode == 200)
                    {
                        using (var stream = new StreamReader(res.GetResponseStream(), Encoding.UTF8))
                        {
                            T body = JSON.DeserializeObject <T>(stream.ReadToEnd());
                            return(new HttpResponse <T>(statusCode, body));
                        }
                    }

                    if (statusCode == 304)
                    {
                        return(new HttpResponse <T>(statusCode));
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ApolloConfigException("Could not complete get operation", ex);
            }

            throw new ApolloConfigStatusCodeException(statusCode, string.Format("Get operation failed for {0}", httpRequest.Url));
        }