How to make a GET request by using Visual Basic .NET or Visual Basic 2005 (301102)



The information in this article applies to:

  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET (2003)
  • Microsoft Visual Basic .NET (2002)

This article was previously published under Q301102
For a Microsoft Visual C# .NET version of this article, see 307023.

IN THIS TASK

SUMMARY

The Microsoft .NET Framework includes many useful classes for networking, including the ability to make Web requests. This article demonstrates how to make a simple GET request to retrieve a Web page from the Internet.

back to the top

Requirements

The following list outlines the recommended hardware, software, network infrastructure, and service packs that you will need:
  • Microsoft Windows 2000 Professional, Microsoft Windows Server 2003, Windows 2000 Server, Windows 2000 Advanced Server, or Windows NT 4.0 Server
  • Microsoft Visual Studio .NET or Microsoft Visual Studio 2005
NOTE: If you are behind a proxy server, you will need either an internal Web address or static proxy values (see steps 7 and 8) to test the code in this article.

back to the top

Request a Web Page

The ability to retrieve a Web page programmatically has a wide variety of uses. This ability was provided to Microsoft Visual Basic 6.0 programmers through the Internet Transfer Control or through direct coding against the WinInet application programming interfaces (APIs). In .NET, the System.Net namespaces provide the WebRequest class to encapsulate a request for an Internet resource, and the WebResponse class to represent the data that is returned. Using these objects, you can obtain a stream that represents the response for a particular request. After you have a stream, reading the response is no different than reading from a local text file or other source.

To make a GET request, follow these steps:
  1. Open Visual Studio .NET or Visual Studio 2005
  2. Create a new Console Application in Microsoft Visual Basic .NET or in Microsoft Visual Basic 2005. Visual Basic .NET or Visual Basic 2005 creates a Module for you, along with an empty Main() procedure.
  3. Make sure that at least the System namespace is referenced by the project.
  4. Use the Imports statement on the System, System.NET, and System.IO (for the stream objects) namespaces so that you will not be required to qualify declarations from these namespaces later in your code. These statements must be used prior to any other declarations.
    Imports System
    Imports System.Net
    Imports System.IO
    					
  5. For this example, just hard-code the uniform resource locator (URL) into a variable. In a real system, you would likely receive this value as a parameter to a function or perhaps as a command-line argument to a console application.
    Dim sURL As String
    sURL = "http://www.microsoft.com"
    					
  6. Create a new WebRequest object, which can only be done through the static Create method of the WebRequest class ("New WebRequest" is not valid). Supply the target URL as part of the call to Create to initialize the object with this value.
    Dim wrGETURL As WebRequest
    wrGETURL = WebRequest.Create(sURL)
    					
  7. If you are behind a proxy, you need to create a WebProxy object and provide it to your WebRequest object if you wish to request URLs outside of your local network. The WebProxy object has a variety of properties (which are not being set in this example code) that allow you to specify the same basic information as can be set through the proxy settings of Microsoft Internet Explorer.
    Dim myProxy As New WebProxy("myproxy", 80)
    myProxy.BypassProxyOnLocal = True
    
    wrGETURL.Proxy = myProxy
    					
  8. If you wish to just use whatever settings have been configured in Internet Explorer, you can do that through the GetDefaultProxy static method of the WebProxy class.
    wrGETURL.Proxy = WebProxy.GetDefaultProxy()
    					
  9. Now that your request is set up with the target URL and any applicable proxy information, you can use it to obtain a Stream object corresponding to the response to your request.
    Dim objStream As Stream
    objStream = wrGETURL.GetResponse.GetResponseStream()
    					
  10. After you have the response stream, you can treat it like any other stream (such as from opening a text file) and read through its contents line by line or even all at once. The loop below reads the stream one line at a time until the ReadLine method returns Nothing, outputting each line to the console.
    Dim objReader As New StreamReader(objStream)
    Dim sLine As String = ""
    Dim i As Integer = 0
    
    Do While Not sLine Is Nothing
        i += 1
        sLine = objReader.ReadLine
        If Not sLine Is Nothing Then
            Console.WriteLine("{0}:{1}", i, sLine)
        End If
    Loop
    Console.ReadLine()
    					
  11. Save and then run your program, making sure that you have configured the proxy information (steps 7 and 8) correctly for your environment. You should see lines of HTML content numbered and outputted to the console.
back to the top

Complete Code Listing

Imports System
Imports System.Net
Imports System.IO

Module Module1

    Sub Main()
        Dim sURL As String
        sURL = "http://www.microsoft.com"

        Dim wrGETURL As WebRequest
        wrGETURL = WebRequest.Create(sURL)

        Dim myProxy As New WebProxy("myproxy", 80)
        myProxy.BypassProxyOnLocal = True

        'wrGETURL.Proxy = myProxy
        wrGETURL.Proxy = WebProxy.GetDefaultProxy()

        Dim objStream As Stream
        objStream = wrGETURL.GetResponse.GetResponseStream()

        Dim objReader As New StreamReader(objStream)
        Dim sLine As String = ""
        Dim i As Integer = 0

        Do While Not sLine Is Nothing
            i += 1
            sLine = objReader.ReadLine
            If Not sLine Is Nothing Then
                Console.WriteLine("{0}:{1}", i, sLine)
            End If
        Loop

        Console.ReadLine()

    End Sub

End Module
				
back to the top

Modification Type:MinorLast Reviewed:10/3/2006
Keywords:kbvs2005swept kbvs2005applies kbHOWTOmaster KB301102 kbAudDeveloper