public static HttpResult FastRequest(HttpWebRequest req) { HttpWebResponse rsp = null; HttpResult output = null; String enc, result = String.Empty; try { req.KeepAlive = false; if (UseCompression) req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); rsp = (HttpWebResponse)req.GetResponse(); enc = rsp.ContentEncoding.ToLower(); lock (SessionCookies) { if (rsp.Cookies != null && rsp.Cookies.Count > 0) SessionCookies.Add(rsp.Cookies); } output = new HttpResult(result, rsp, null); rsp.Close(); } catch (Exception error) { output = new HttpResult(String.Empty, null, error); } return output; }
public static HttpResult Request(HttpWebRequest req) { HttpWebResponse rsp = null; HttpResult output = null; String enc, result = String.Empty; try { if (UseCompression) req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); rsp = (HttpWebResponse)req.GetResponse(); enc = rsp.ContentEncoding.ToLower(); if (enc.Contains("gzip")) { using (var s = new GZipStream(rsp.GetResponseStream(), CompressionMode.Decompress)) using (var sr = new StreamReader(s, Encoding.GetEncoding(rsp.CharacterSet))) { result = sr.ReadToEnd(); s.Close(); sr.Close(); } } else if (enc.Contains("deflate")) { using (var s = new DeflateStream(rsp.GetResponseStream(), CompressionMode.Decompress)) using (var sr = new StreamReader(s, Encoding.GetEncoding(rsp.CharacterSet))) { result = sr.ReadToEnd(); s.Close(); sr.Close(); } } else { using (var s = rsp.GetResponseStream()) using (var sr = new StreamReader(s, Encoding.GetEncoding(rsp.CharacterSet))) { result = sr.ReadToEnd(); s.Close(); sr.Close(); } } lock (SessionCookies) { if (rsp.Cookies != null && rsp.Cookies.Count > 0) SessionCookies.Add(rsp.Cookies); //FixCookieDomains() } output = new HttpResult(result, rsp, null); rsp.Close(); } catch (Exception error) { output = new HttpResult(String.Empty, null, error); } return output; }
public static HttpResult Request(HttpWebRequest req) { HttpWebResponse rsp = null; HttpResult output = null; String enc, result = String.Empty; try { if (UseCompression) { req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); } rsp = (HttpWebResponse)req.GetResponse(); enc = rsp.ContentEncoding.ToLower(); if (enc.Contains("gzip")) { using (var s = new GZipStream(rsp.GetResponseStream(), CompressionMode.Decompress)) using (var sr = new StreamReader(s, Encoding.GetEncoding(rsp.CharacterSet))) { result = sr.ReadToEnd(); s.Close(); sr.Close(); } } else if (enc.Contains("deflate")) { using (var s = new DeflateStream(rsp.GetResponseStream(), CompressionMode.Decompress)) using (var sr = new StreamReader(s, Encoding.GetEncoding(rsp.CharacterSet))) { result = sr.ReadToEnd(); s.Close(); sr.Close(); } } else { using (var s = rsp.GetResponseStream()) using (var sr = new StreamReader(s, Encoding.GetEncoding(rsp.CharacterSet))) { result = sr.ReadToEnd(); s.Close(); sr.Close(); } } lock (SessionCookies) { if (rsp.Cookies != null && rsp.Cookies.Count > 0) { SessionCookies.Add(rsp.Cookies); } //FixCookieDomains() } output = new HttpResult(result, rsp, null); rsp.Close(); } catch (Exception error) { output = new HttpResult(String.Empty, null, error); } return(output); }
public static HttpResult HandleRedirects(HttpResult result, bool isFastRequest) { var count = 0; var r = result; var url = String.Empty; var status = (result.HasError) ? HttpStatusCode.NotFound : result.Response.StatusCode; Func<HttpStatusCode, Boolean> allowContinue = statusCode => { switch (statusCode) { case HttpStatusCode.MovedPermanently: case HttpStatusCode.Found: return true; default: return false; } }; Func<String, Boolean> needsRedirect = location => { Uri uri = null; return (location != null && location.Length > 0 && Uri.TryCreate(location, UriKind.Absolute, out uri)); }; if (r.HasError || MaxRedirects < 1) return result; else if (MaxRedirects == 1) { url = r.Response.Headers["Location"]; if (needsRedirect(url)) { return (isFastRequest) ? FastRequest(Prepare(url)) : Request(Prepare(url)); } else return result; } else { while (count < MaxRedirects && !r.HasError && allowContinue(r.Response.StatusCode)) { url = r.Response.Headers["Location"]; if (needsRedirect(url)) { r = (isFastRequest) ? FastRequest(Prepare(url)) : Request(Prepare(url)); } count++; } return r; } }
public TopicPostedEventArgs(SiteTopic topic, HttpResult result) { this.Topic = topic; this.Result = result; }