diff --git a/2018/01/httpweb.cs b/2018/01/httpweb.cs index 44e3622..b38b22a 100644 --- a/2018/01/httpweb.cs +++ b/2018/01/httpweb.cs @@ -6,163 +6,208 @@ using System.Windows.Forms; namespace RyzStudio.Net { - public class HttpWeb - { - public string defaultUserAgent = "Momozilla/5.0 (" + Environment.OSVersion.Platform.ToString() + " ; " + Environment.OSVersion.VersionString + "; " + Application.CurrentCulture.TwoLetterISOLanguageName + ")"; - public int defaultTimeout = 6000; - public int defaultMaxRedirect = 8; - public bool defaultAllowRedirect = true; - public CookieContainer defaultCookierContainer = null; + public class HttpWeb + { + public string defaultUserAgent = "Momozilla/5.0 (" + Environment.OSVersion.Platform.ToString() + " ; " + Environment.OSVersion.VersionString + "; " + Application.CurrentCulture.TwoLetterISOLanguageName + ")"; + public int defaultTimeout = 6000; + public int defaultMaxRedirect = 8; + public bool defaultAllowRedirect = true; + public CookieContainer defaultCookierContainer = null; - public HttpWeb() - { - } + public HttpWeb() + { + } - public HttpWebRequest CreateRequest(string url) - { - return this.CreateRequest(url, url); - } + public HttpWebRequest CreateRequest(string requestURL) => this.CreateRequest(requestURL, requestURL); - public HttpWebRequest CreateRequest(string url, string referrerURL) - { - if (defaultCookierContainer == null) - { - defaultCookierContainer = new CookieContainer(); - } + public HttpWebRequest CreateRequest(string requestURL, string referrerURL) + { + if (defaultCookierContainer == null) + { + defaultCookierContainer = new CookieContainer(); + } - HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); - webRequest.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore); - webRequest.MaximumAutomaticRedirections = defaultMaxRedirect; - webRequest.CookieContainer = defaultCookierContainer; - webRequest.UserAgent = defaultUserAgent; - webRequest.AllowAutoRedirect = defaultAllowRedirect; - webRequest.Timeout = defaultTimeout; + HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(requestURL); + webRequest.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore); + webRequest.MaximumAutomaticRedirections = defaultMaxRedirect; + webRequest.CookieContainer = defaultCookierContainer; + webRequest.UserAgent = defaultUserAgent; + webRequest.AllowAutoRedirect = defaultAllowRedirect; + webRequest.Timeout = defaultTimeout; + webRequest.Referer = referrerURL; - return webRequest; - } + return webRequest; + } - public int GetResponse(out string sourceCode, string url, string referrerURL = "") - { - HttpWebRequest webRequest = this.CreateRequest(url, referrerURL); + public int GetResponse(out string sourceCode, string requestURL) => this.GetResponse(out sourceCode, this.CreateRequest(requestURL)); - return GetResponse(out sourceCode, webRequest); - } + public int GetResponse(out string sourceCode, string requestURL, string referrerURL) => this.GetResponse(out sourceCode, this.CreateRequest(requestURL, referrerURL)); - public int GetResponse(out string sourceCode, HttpWebRequest webRequest) - { - sourceCode = string.Empty; + public int GetResponse(out string sourceCode, HttpWebRequest webRequest) + { + sourceCode = string.Empty; - int rv = 0; + int rv = 0; - try - { - HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); + try + { + HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); - rv = (int)webResponse.StatusCode; + rv = (int)webResponse.StatusCode; - StreamReader readContent = new StreamReader(webResponse.GetResponseStream()); - sourceCode = readContent.ReadToEnd(); + StreamReader readContent = new StreamReader(webResponse.GetResponseStream()); + sourceCode = readContent.ReadToEnd(); - webResponse.Close(); - webResponse = null; - } - catch (WebException xc) - { - if (xc.Response is HttpWebResponse) - { - HttpWebResponse rs = xc.Response as HttpWebResponse; - StreamReader readContent = new StreamReader(rs.GetResponseStream()); - if (readContent != null) - { - sourceCode = readContent.ReadToEnd(); - } + webResponse.Close(); + webResponse = null; + } + catch (WebException xc) + { + if (xc.Response is HttpWebResponse) + { + HttpWebResponse rs = xc.Response as HttpWebResponse; + StreamReader readContent = new StreamReader(rs.GetResponseStream()); + if (readContent != null) + { + sourceCode = readContent.ReadToEnd(); + } - rv = (int)rs.StatusCode; - } - else - { - rv = (int)xc.Status; - sourceCode = xc.Message; - } - } - catch (Exception xc) - { - sourceCode = xc.Message; - } + rv = (int)rs.StatusCode; + } + else + { + rv = (int)xc.Status; + sourceCode = xc.Message; + } + } + catch (Exception xc) + { + sourceCode = xc.Message; + } - return rv; - } + return rv; + } + + public int GetResponse(out HttpWebRequest webRequest, out string sourceCode, string requestURL) => this.GetResponse(out webRequest, out sourceCode, requestURL, requestURL, true); - public static HttpWebRequest AddBasicAuthentication(HttpWebRequest webRequest, string username, string password) - { - webRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(string.Concat(username, ":", password))); - webRequest.PreAuthenticate = true; + public int GetResponse(out HttpWebRequest webRequest, out string sourceCode, string requestURL, bool allowAutoRedirect) => this.GetResponse(out webRequest, out sourceCode, requestURL, requestURL, allowAutoRedirect); - return webRequest; - } + public int GetResponse(out HttpWebRequest webRequest, out string sourceCode, string requestURL, string referrerURL) => this.GetResponse(out webRequest, out sourceCode, requestURL, referrerURL, true); + public int GetResponse(out HttpWebRequest webRequest, out string sourceCode, string requestURL, string referrerURL, bool allowAutoRedirect) + { + webRequest = this.CreateRequest(requestURL, referrerURL); + webRequest.AllowAutoRedirect = allowAutoRedirect; - public int GetPOSTResponse(out string sourceCode, HttpWebRequest webRequest, string postData) - { - sourceCode = ""; - int rv = 0; - byte[] buffer = Encoding.UTF8.GetBytes(postData); + return this.GetResponse(out sourceCode, webRequest); + } - webRequest.ContentLength = buffer.Length; + public int GetHEADResponse(string requestURL) => this.GetHEADResponse(requestURL, requestURL, true); - try - { - Stream dataStream = webRequest.GetRequestStream(); - dataStream.Write(buffer, 0, buffer.Length); - dataStream.Close(); - } - catch (Exception xc) - { - sourceCode = xc.Message; - return rv; - } + public int GetHEADResponse(string requestURL, string referrerURL) => this.GetHEADResponse(requestURL, requestURL, true); - return this.GetResponse(out sourceCode, webRequest); - } + public int GetHEADResponse(string requestURL, bool allowAutoRedirect) => this.GetHEADResponse(requestURL, requestURL, allowAutoRedirect); - public int GetHeader(out WebHeaderCollection headerCollection, string url, string referrerURL = "") - { - headerCollection = null; + public int GetHEADResponse(string requestURL, string referrerURL, bool allowAutoRedirect) + { + HttpWebRequest webRequest = this.CreateRequest(requestURL, referrerURL); + webRequest.Method = "HEAD"; + webRequest.AllowAutoRedirect = allowAutoRedirect; - int rv = 0; + string sc; + int rc = this.GetResponse(out sc, webRequest); - HttpWebRequest webRequest = this.CreateRequest(url, referrerURL); - webRequest.Method = "HEAD"; + return rc; + } - try - { - HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); - headerCollection = webResponse.Headers; + public int GetHEADResponse(out HttpWebRequest webRequest, string requestURL) => this.GetHEADResponse(out webRequest, requestURL, requestURL, true); - rv = (int)webResponse.StatusCode; + public int GetHEADResponse(out HttpWebRequest webRequest, string requestURL, string referrerURL) => this.GetHEADResponse(out webRequest, requestURL, referrerURL, true); - webResponse.Close(); - webResponse = null; - } - catch (WebException xc) - { - if (xc.Response is HttpWebResponse) - { - HttpWebResponse rs = xc.Response as HttpWebResponse; + public int GetHEADResponse(out HttpWebRequest webRequest, string requestURL, bool allowAutoRedirect) => this.GetHEADResponse(out webRequest, requestURL, requestURL, allowAutoRedirect); - rv = (int)rs.StatusCode; - } - else - { - rv = (int)xc.Status; - } - } - catch (Exception xc) - { - // do nothing - } + public int GetHEADResponse(out HttpWebRequest webRequest, string requestURL, string referrerURL, bool allowAutoRedirect) + { + webRequest = this.CreateRequest(requestURL, referrerURL); + webRequest.Method = "HEAD"; + webRequest.AllowAutoRedirect = allowAutoRedirect; - return rv; - } - } + string sc; + int rc = this.GetResponse(out sc, webRequest); + + return rc; + } + + public int GetPOSTResponse(out string sourceCode, HttpWebRequest webRequest, string postData) + { + sourceCode = string.Empty; + int rv = 0; + byte[] buffer = Encoding.UTF8.GetBytes(postData); + + webRequest.ContentLength = buffer.Length; + + try + { + Stream dataStream = webRequest.GetRequestStream(); + dataStream.Write(buffer, 0, buffer.Length); + dataStream.Close(); + } + catch (Exception xc) + { + sourceCode = xc.Message; + return rv; + } + + return this.GetResponse(out sourceCode, webRequest); + } + + public int GetHeader(out WebHeaderCollection headerCollection, string url, string referrerURL = "") + { + headerCollection = null; + + int rv = 0; + + HttpWebRequest webRequest = this.CreateRequest(url, referrerURL); + webRequest.Method = "HEAD"; + + try + { + HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); + headerCollection = webResponse.Headers; + + rv = (int)webResponse.StatusCode; + + webResponse.Close(); + webResponse = null; + } + catch (WebException xc) + { + if (xc.Response is HttpWebResponse) + { + HttpWebResponse rs = xc.Response as HttpWebResponse; + + rv = (int)rs.StatusCode; + } + else + { + rv = (int)xc.Status; + } + } + catch (Exception xc) + { + // do nothing + } + + return rv; + } + + public static HttpWebRequest AddBasicAuthentication(HttpWebRequest webRequest, string username, string password) + { + webRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(string.Concat(username, ":", password))); + webRequest.PreAuthenticate = true; + + return webRequest; + } + + } } \ No newline at end of file