Esempio n. 1
0
        public string HttpGetRequest(string url, bool followRedirect = true)
        {
            Is403Error        = false;
            RequestStatusCode = 0;
            CurrentRetryCount = 0;
            WebClientRequest  = (HttpWebRequest)WebRequest.Create(url);
            WebClientRequest.CookieContainer = _cJar;
            WebClientRequest.UserAgent       = WebUserAgentString;
            WebClientRequest.Accept          = "*/*";
            WebClientRequest.KeepAlive       = false;
            WebClientRequest.Method          = "GET";

            if (followRedirect)
            {
                WebClientRequest.AllowAutoRedirect = false;
            }

            while (!CheckWebResponse())
            {
                Thread.Sleep(5000);

                CurrentRetryCount++;
                Log.Info($"HTTP Get Retry: {CurrentRetryCount} of {MaxWebRetries}");
                if (CurrentRetryCount >= MaxWebRetries)
                {
                    return(string.Empty);
                }
            }


            if (followRedirect && (RequestStatusCode == (int)HttpStatusCode.Moved ||
                                   RequestStatusCode == (int)HttpStatusCode.Found))
            {
                while (WebClientResponse.StatusCode == HttpStatusCode.Found ||
                       WebClientResponse.StatusCode == HttpStatusCode.Moved)
                {
                    WebClientResponse.Close();
                    WebClientRequest = (HttpWebRequest)WebRequest.Create(WebClientResponse.Headers["Location"]);
                    WebClientRequest.AllowAutoRedirect = false;
                    WebClientRequest.CookieContainer   = _cJar;
                    WebClientResponse = (HttpWebResponse)WebClientRequest.GetResponse();
                }
            }

            StreamReader = new StreamReader(WebClientResponse.GetResponseStream()
                                            ?? throw new InvalidOperationException());

            RequestStatusCode = (int)WebClientResponse.StatusCode;
            var responseData = StreamReader.ReadToEnd();

            return(responseData);
        }
Esempio n. 2
0
        public string HttpPostRequest(string url, string post, bool followRedirect = true, string refer = "")
        {
            WebClientRequest = (HttpWebRequest)WebRequest.Create(url);
            WebClientRequest.CookieContainer = _cJar;
            WebClientRequest.UserAgent       = WebUserAgentString;
            WebClientRequest.KeepAlive       = false;
            WebClientRequest.Method          = "POST";
            WebClientRequest.Referer         = refer;

            if (followRedirect)
            {
                WebClientRequest.AllowAutoRedirect = false;
            }

            var postBytes = Encoding.ASCII.GetBytes(post);

            WebClientRequest.ContentType   = "text/x-www-form-urlencoded";
            WebClientRequest.ContentLength = postBytes.Length;

            var requestStream = WebClientRequest.GetRequestStream();

            requestStream.Write(postBytes, 0, postBytes.Length);
            requestStream.Close();

            WebClientResponse = (HttpWebResponse)WebClientRequest.GetResponse();

            if (followRedirect && (WebClientResponse.StatusCode == HttpStatusCode.Moved ||
                                   WebClientResponse.StatusCode == HttpStatusCode.Found))
            {
                while (WebClientResponse.StatusCode == HttpStatusCode.Found ||
                       WebClientResponse.StatusCode == HttpStatusCode.Moved)
                {
                    WebClientResponse.Close();
                    WebClientRequest = (HttpWebRequest)WebRequest.Create(WebClientResponse.Headers["Location"]);
                    WebClientRequest.AllowAutoRedirect = false;
                    WebClientRequest.CookieContainer   = _cJar;
                    WebClientResponse = (HttpWebResponse)WebClientRequest.GetResponse();
                }
            }

            StreamReader = new StreamReader(WebClientResponse.GetResponseStream()
                                            ?? throw new InvalidOperationException());

            return(StreamReader.ReadToEnd());
        }
Esempio n. 3
0
        private bool CheckWebResponse()
        {
            try
            {
                WebClientResponse = (HttpWebResponse)WebClientRequest.GetResponse();

                RequestStatusCode = (int)WebClientResponse.StatusCode;
                if (RequestStatusCode != (int)HttpStatusCode.OK)
                {
                    SuccessfulWebRequest = false;
                    throw new Exception($"Api Error: Request status code does not match 200OK: {RequestStatusCode}");
                }

                SuccessfulWebRequest = true;
            }
            catch (WebException cwrException)
            {
                RequestStatusCode = (int)((HttpWebResponse)cwrException.Response).StatusCode;
                Is403Error        = RequestStatusCode == (int)HttpStatusCode.Forbidden;

                Log.Error($"Http Get Exception: {cwrException.Message}");
                if (cwrException.InnerException != null)
                {
                    Log.Error($"Inner Exception: {cwrException.InnerException.Message}");
                }
                SuccessfulWebRequest = false;
            }
            catch (Exception unhandledException)
            {
                Log.Error($"Http Get Unhandled Exception: {unhandledException.Message}");
                if (unhandledException.InnerException != null)
                {
                    Log.Error($"Inner Exception: {unhandledException.InnerException.Message}");
                }
                SuccessfulWebRequest = false;
            }

            return(SuccessfulWebRequest);
        }