Advertisement
deebug

Network.vb

Jul 12th, 2011
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Imports System.Text
  2. Imports System.IO
  3. Imports System.Collections.Specialized
  4. Imports Newtonsoft.Json.Linq
  5. Imports System.Threading
  6. Imports AutoMtGox.Sitesource.Log
  7.  
  8. Namespace Sitesource.Network
  9.     ''' <summary>
  10.    ''' A simple request class that return a response string.
  11.    ''' </summary>
  12.    ''' <remarks></remarks>
  13.    Public Class Request
  14.         Private _logger As SimpleLogger
  15.         ''' <summary>
  16.        ''' New
  17.        ''' </summary>
  18.        ''' <param name="logger"></param>
  19.        ''' <remarks></remarks>
  20.        Public Sub New(ByRef logger As SimpleLogger)
  21.             _logger = logger
  22.         End Sub
  23.         ''' <summary>
  24.        ''' GetResponse
  25.        ''' </summary>
  26.        ''' <param name="url">The url where the request is sent to.</param>
  27.        ''' <returns></returns>
  28.        ''' <remarks></remarks>
  29.        Public Function GetResponse(ByVal url As String) As String
  30.             Return GetResponse(url, Nothing)
  31.         End Function
  32.         ''' <summary>
  33.        ''' GetResponse with data
  34.        ''' </summary>
  35.        ''' <param name="url">The url where the request is sent to.</param>
  36.        ''' <param name="parameters">Post data.</param>
  37.        ''' <returns></returns>
  38.        ''' <remarks></remarks>
  39.        Public Function GetResponse(ByVal url As String, ByVal parameters As NameValueCollection) As String
  40.             Dim request As HttpWebRequest = HttpWebRequest.Create(url)
  41.             request.UserAgent = My.Settings.DefaultUserAgent
  42.             If parameters IsNot Nothing Then
  43.                 request.Method = Util.RequestMethodPOST
  44.                 Dim encoding As New UTF8Encoding
  45.                 Dim byteArray As Byte() = encoding.GetBytes(Util.GetPostString(parameters))
  46.                 request.ContentLength = byteArray.Length
  47.                 request.ContentType = Util.FormContentType
  48.                 Dim dataStream As Stream = request.GetRequestStream()
  49.                 dataStream.Write(byteArray, 0, byteArray.Length)
  50.                 dataStream.Close()
  51.                 'make sure that any password remanents are out of memory, and trigger a garbage collection
  52.                parameters = Nothing
  53.                 byteArray = Nothing
  54.                 System.GC.Collect()
  55.             Else
  56.                 request.Method = Util.RequestMethodGET
  57.             End If
  58.             Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
  59.             If response.StatusCode = HttpStatusCode.Accepted Or HttpStatusCode.Found Then
  60.                 Dim receiveStream As Stream = response.GetResponseStream()
  61.                 Dim readStream As New StreamReader(receiveStream, System.Text.Encoding.UTF8)
  62.                 Try
  63.                     Return readStream.ReadToEnd()
  64.                 Catch ex As Exception
  65.                     _logger.WriteEntry(LogEntryType.Error, "GetResponse() {0}.", ex.ToString())
  66.                 End Try
  67.             Else
  68.                 _logger.WriteEntry(LogEntryType.Error, "GetResponse() status code is {0}. Status code {1} or {2} expected.", response.StatusCode, HttpStatusCode.Accepted, HttpStatusCode.Found)
  69.             End If
  70.             Return Nothing
  71.         End Function
  72.      
  73.     End Class
  74. End Namespace
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement