Public Class HTTPRequest Public Enum RequestMethod GetRequest = 1 PostRequest = 2 End Enum Private _slRedirects As SortedList Public Property SLRedirects() As SortedList Get If _slRedirects Is Nothing Then _slRedirects = New SortedList End If Return _slRedirects End Get Set(ByVal Value As SortedList) _slRedirects = Value End Set End Property #Region " Public Properties " Private _Byte() As Byte Public Property ByteArray() As Byte() Get Return _Byte End Get Set(ByVal Value As Byte()) _Byte = Value End Set End Property Private _TotalBytesRead As Int32 Public Property BytesRead() As Int32 Get Return _TotalBytesRead End Get Set(ByVal Value As Int32) _TotalBytesRead = Value End Set End Property #End Region Public Function WebRequestURIIntoHTML(ByVal URI As String, ByVal MaxRedirects As Int32, ByVal Method As RequestMethod, _ Optional ByVal PostData As StringBuilder = Nothing) As Array 'Dim myRes As HttpWebResponse Dim SB As New StringBuilder Dim Arr(1) As Object 'Get the request from the server Dim WebRequestObject As HttpWebRequest = Nothing Dim WebResponseObject As HttpWebResponse = Nothing Dim sr As StreamReader = Nothing Dim Writer As StreamWriter = Nothing Try Dim baseURL As String = URI 'If there is no data to post and a ? hasn't already been established, attach the PostData as querystring 'method If Not PostData Is Nothing AndAlso (URI.IndexOf("?") = -1) AndAlso Method = RequestMethod.GetRequest Then baseURL += "?" + PostData.ToString End If Dim Cookies As String = "" Dim Result As String = Nothing Dim ContinueRedirecting As Boolean = True Dim RedirectCount As Int32 = 0 Dim ReqReferer As String = "" While ContinueRedirecting = True AndAlso (RedirectCount < MaxRedirects) 'First page we hit. RedirectCount += 1 Try WebRequestObject = CType(WebRequest.Create(baseURL), HttpWebRequest) WebRequestObject.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)" WebRequestObject.CookieContainer = New CookieContainer WebRequestObject.AllowAutoRedirect = True WebRequestObject.CookieContainer = New CookieContainer WebRequestObject.Headers.Add("Cookie", Cookies) WebRequestObject.Referer = "" WebRequestObject.Timeout = 5 * 1000 If Method = RequestMethod.GetRequest Then WebRequestObject.Method = "GET" Else If PostData.Length = 0 Then Throw New Exception("No Post Data Supplied") End If WebRequestObject.Method = "POST" WebRequestObject.ContentType = "application/x-www-form-urlencoded" WebRequestObject.ContentLength = PostData.Length Writer = New StreamWriter(WebRequestObject.GetRequestStream()) Writer.Write(PostData) Writer.Close() End If WebResponseObject = CType(WebRequestObject.GetResponse(), HttpWebResponse) If Not WebResponseObject.Headers.Item("Set-Cookie") Is Nothing Then Cookies = WebResponseObject.Headers.Item("Set-Cookie") End If Dim RedirectURL As String = WebResponseObject.Headers.Item("Location") If RedirectURL <> "" Then ReqReferer = RedirectURL Me.SLRedirects.Add(RedirectCount, RedirectURL) baseURL = baseURL.Substring(0, baseURL.LastIndexOf("/") + 1) baseURL = (New Uri(New Uri(baseURL), RedirectURL)).AbsoluteUri Else ContinueRedirecting = False sr = New StreamReader(WebResponseObject.GetResponseStream) SB.Append(sr.ReadToEnd()) sr.Close() End If Finally Try sr.Close() Catch exp As Exception Try SB.Append("Request Status Of " & URI & " " & exp.Message & " " & exp.StackTrace) Dim wc As New WebClient Dim b() As Byte = wc.DownloadData(baseURL) Dim results As String = (New UTF8Encoding).GetChars(b) SB.Append(results) Catch ex As Exception : End Try End Try Try WebResponseObject.Close() WebRequestObject.Abort() Catch End Try End Try End While ' Print the properties of each cookie. Dim cook As Cookie For Each cook In WebResponseObject.Cookies 'This works, but I don't want to see it 'Console.WriteLine("Cookie:") 'Console.WriteLine("{0} = {1}", cook.Name, cook.Value) 'Console.WriteLine("Domain: {0}", cook.Domain) 'Console.WriteLine("Path: {0}", cook.Path) 'Console.WriteLine("Port: {0}", cook.Port) 'Console.WriteLine("Secure: {0}", cook.Secure) 'Console.WriteLine("When issued: {0}", cook.TimeStamp) 'Console.WriteLine("Expires: {0} (expired? {1})", cook.Expires, cook.Expired) 'Console.WriteLine("Don't save: {0}", cook.Discard) 'Console.WriteLine("Comment: {0}", cook.Comment) 'Console.WriteLine("Uri for comments: {0}", cook.CommentUri) 'Console.WriteLine("Version: RFC {0}", IIf(cook.Version = 1, "2109", "2965")) 'Show the string representation of the cookie. 'Console.WriteLine("String: {0}", cook.ToString()) Next cook Arr(0) = SB Arr(1) = CStr(WebResponseObject.StatusCode) Return Arr Catch httpexp As HttpException Arr(0) = Nothing Arr(1) = WebResponseObject.StatusCode Return Arr End Try End Function End Class