Skip to content

Instantly share code, notes, and snippets.

@kersny
Forked from ruel/BasicReq.cs
Created March 11, 2011 01:12
Show Gist options
  • Save kersny/865296 to your computer and use it in GitHub Desktop.
Save kersny/865296 to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace BasicReq
{
/// <summary>
/// A simple basic class for HTTP Requests.
/// </summary>
class BReq
{
/// <summary>
/// UserAgent to be used on the requests
/// </summary>
public string UserAgent = @"Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23";
/// <summary>
/// Cookie Container that will handle all the cookies.
/// </summary>
private CookieContainer cJar;
/// <summary>
/// Performs a basic HTTP GET request.
/// </summary>
/// <param name="url">The URL of the request.</param>
/// <returns>HTML Content of the response.</returns>
public string HttpGet(string url, bool follow_redirect = true)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = cJar;
request.UserAgent = UserAgent;
request.KeepAlive = false;
if (follow_redirect)
request.AllowAutoRedirect = false;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (follow_redirect && (response.StatusCode == HttpStatusCode.Moved || response.StatusCode == HttpStatusCode.Found))
{
while (response.StatusCode == HttpStatusCode.Found || response.StatusCode == HttpStatusCode.Moved)
{
response.Close();
request = (HttpWebRequest)HttpWebRequest.Create(response.Headers["Location"]);
request.AllowAutoRedirect = false;
request.CookieContainer = cJar;
response = (HttpWebResponse)request.GetResponse();
}
}
StreamReader sr = new StreamReader(response.GetResponseStream());
return sr.ReadToEnd();
}
/// <summary>
/// Performs a basic HTTP POST request
/// </summary>
/// <param name="url">The URL of the request.</param>
/// <param name="post">POST Data to be passed.</param>
/// <param name="refer">Referrer of the request</param>
/// <returns>HTML Content of the response.</returns>
public string HttpPost(string url, string post, bool follow_redirect = true, string refer = "")
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = cJar;
request.UserAgent = UserAgent;
request.KeepAlive = false;
request.Method = "POST";
request.Referer = refer;
if (follow_redirect)
request.AllowAutoRedirect = false;
byte[] postBytes = Encoding.ASCII.GetBytes(post);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (follow_redirect && (response.StatusCode == HttpStatusCode.Moved || response.StatusCode == HttpStatusCode.Found))
{
while (response.StatusCode == HttpStatusCode.Found || response.StatusCode == HttpStatusCode.Moved)
{
response.Close();
request = (HttpWebRequest)HttpWebRequest.Create(response.Headers["Location"]);
request.AllowAutoRedirect = false;
request.CookieContainer = cJar;
response = (HttpWebResponse)request.GetResponse();
}
}
StreamReader sr = new StreamReader(response.GetResponseStream());
return sr.ReadToEnd();
}
/// <summary>
/// Creates an HTML file from the string.
/// </summary>
/// <param name="html">HTML String.</param>
public void DebugHtml(string html)
{
StreamWriter sw = new StreamWriter("debug.html");
sw.Write(html);
sw.Close();
}
/// <summary>
/// Initializes a new instance of the <see cref="BReq"/> class.
/// </summary>
public BReq()
{
cJar = new CookieContainer();
}
/// <summary>
/// Releases unmanaged resources and performs other cleanup operations before the
/// <see cref="BReq"/> is reclaimed by garbage collection.
/// </summary>
~BReq()
{
// Nothing here
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment