private HttpWebRequest CreateRequest() { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(Url); httpWebRequest.UserAgent = UserAgent; httpWebRequest.PreAuthenticate = PreAuthenticate; httpWebRequest.Accept = Accept; httpWebRequest.Timeout = TimeoutRequest; httpWebRequest.KeepAlive = KeepAlive; if (this.Parameters != null && this.Parameters.Length > 0) { httpWebRequest.Method = "POST"; } else { httpWebRequest.Method = "GET"; } httpWebRequest.Headers["Accept-Encoding"] = AcceptEncoding; httpWebRequest.Headers["Accept-Language"] = AcceptLanguage; httpWebRequest.Headers["UA-CPU"] = UACPU; httpWebRequest.Headers["Cache-Control"] = CacheControl; if (!string.IsNullOrEmpty(RequestedWith)) { httpWebRequest.Headers["x-requested-with"] = RequestedWith; } httpWebRequest.ContentLength = 0L; httpWebRequest.AllowAutoRedirect = AutoRedirect; if (Headers != null) { foreach (KeyValuePair <string, string> header in Headers) { httpWebRequest.Headers.Add(header.Key, header.Value); } } if (Referer != null) { httpWebRequest.Referer = Referer; } httpWebRequest.CookieContainer = new CookieContainer(); if (AllCookies.Count > 0) { foreach (Cookie todosCookie in AllCookies) { httpWebRequest.CookieContainer.Add(todosCookie); } } if (Parameters != null && Parameters.Trim().Length > 0) { byte[] bytes = EncodingPage.GetBytes(Parameters); httpWebRequest.Method = "POST"; httpWebRequest.ContentType = ContentType; httpWebRequest.ContentLength = bytes.Length; using (Stream requestStream = httpWebRequest.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); } } return(httpWebRequest); }
internal ResponseHttp LoadPage(string url) { responseHttp = new ResponseHttp(); this.Url = url; lock (SyncRoot) { try { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(Url); httpWebRequest.UserAgent = UserAgent; httpWebRequest.PreAuthenticate = PreAuthenticate; httpWebRequest.Accept = Accept; httpWebRequest.Timeout = TimeoutRequest; httpWebRequest.KeepAlive = KeepAlive; if (this.Parameters != null && this.Parameters.Length > 0) { httpWebRequest.Method = "POST"; } else { httpWebRequest.Method = "GET"; } httpWebRequest.Headers["Accept-Encoding"] = AcceptEncoding; httpWebRequest.Headers["Accept-Language"] = AcceptLanguage; httpWebRequest.Headers["UA-CPU"] = UACPU; httpWebRequest.Headers["Cache-Control"] = CacheControl; if (!string.IsNullOrEmpty(RequestedWith)) { httpWebRequest.Headers["x-requested-with"] = RequestedWith; } httpWebRequest.ContentLength = 0L; httpWebRequest.AllowAutoRedirect = AutoRedirect; if (Headers != null) { foreach (KeyValuePair <string, string> header in Headers) { httpWebRequest.Headers.Add(header.Key, header.Value); } } if (Referer != null) { httpWebRequest.Referer = Referer; } httpWebRequest.CookieContainer = new CookieContainer(); if (AllCookies.Count > 0) { foreach (Cookie todosCookie in AllCookies) { httpWebRequest.CookieContainer.Add(todosCookie); } } if (Parameters != null && Parameters.Trim().Length > 0) { byte[] bytes = EncodingPage.GetBytes(Parameters); httpWebRequest.Method = "POST"; httpWebRequest.ContentType = ContentType; httpWebRequest.ContentLength = bytes.Length; using (Stream requestStream = httpWebRequest.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); } } string html; string responseHeader; using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse()) { responseHttp.StatusCode = response.StatusCode; if (response.ContentType.StartsWith("image")) { using (Stream responseStream = response.GetResponseStream()) html = string.Format("data:{0};base64,{1}", response.ContentType, Convert.ToBase64String(responseStream.ReadAllBytes())); } else { using (Stream responseStream = response.GetResponseStream()) { Stream stream = null; try { stream = string.IsNullOrEmpty(response.ContentEncoding) || !response.ContentEncoding.ToLower().Contains("gzip") ? (string.IsNullOrEmpty(response.ContentEncoding) || !response.ContentEncoding.ToLower().Contains("deflate") ? responseStream : new DeflateStream(responseStream, CompressionMode.Decompress)) : new GZipStream(responseStream, CompressionMode.Decompress); using (StreamReader streamReader = new StreamReader(stream, DefaultEncoding)) { html = streamReader.ReadToEnd(); streamReader.Close(); } responseStream.Close(); } finally { if (stream != null) { stream.Dispose(); } } } } AddCookies(response.Cookies, responseHttp); AddInternalCookie(response, responseHttp); responseHeader = response.GetResponseHeader("Location"); responseHttp.UrlLocation = responseHeader; responseHttp.Method = response.Method; responseHttp.Server = response.Server; responseHttp.HeadersAdded = this.Headers; response.Close(); } if (MaxRedirect > 0) { if (!string.IsNullOrEmpty(responseHeader) && Uri.IsWellFormedUriString(responseHeader, UriKind.Absolute)) { MaxRedirect--; this.Referer = url; return(LoadPage(responseHeader)); } } responseHttp.HtmlPage = html; LoadTypes(html, responseHttp); OnLoad?.Invoke(this, new RequestHttpEventArgs(html, responseHttp)); return(responseHttp); } catch (WebException ex) { responseHttp.StatusCode = HttpStatusCode.InternalServerError; } //catch (Exception ex) //{ // return null; //} return(responseHttp); } }