VBScript WinHttp.WinHttpRequest.5.1 Object
last modified April 9, 2025
The WinHttp.WinHttpRequest.5.1 object in VBScript provides HTTP
client functionality for making web requests. It supports GET, POST, and other
HTTP methods with full header control. This COM object is part of Windows HTTP
Services and works without additional dependencies.
WinHttpRequest is ideal for automation scripts needing web access.
It handles cookies, authentication, and secure connections. This tutorial covers
the object with practical examples demonstrating common use cases. You'll learn
to make various HTTP requests and process responses.
WinHttpRequest Object Overview
The WinHttpRequest object represents an HTTP client capable of
sending requests to web servers. Key methods include Open,
Send, and SetRequestHeader. Properties like
ResponseText and Status provide access to results.
The object supports synchronous and asynchronous operation modes. It works with HTTP and HTTPS protocols. Common uses include web scraping, API interaction, and automated testing. Understanding this object enables powerful web automation in VBScript.
Basic GET Request
This example demonstrates the simplest GET request to fetch webpage content. It shows how to initialize the object, send a request, and read the response. The script retrieves and displays the content of a public test API endpoint.
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "https://jsonplaceholder.typicode.com/posts/1", False
http.Send
WScript.Echo "Status: " & http.Status
WScript.Echo "Response: " & http.ResponseText
Set http = Nothing
The script creates a WinHttpRequest object and opens a GET request.
The third parameter (False) specifies synchronous operation. After sending, it
displays the HTTP status and response text. This pattern forms the basis for all
HTTP requests.
POST Request with JSON Data
This example shows how to send a POST request with JSON data. It demonstrates setting request headers and including a request body. The script posts data to a test API and displays the server's response.
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "POST", "https://jsonplaceholder.typicode.com/posts", False
http.SetRequestHeader "Content-Type", "application/json"
postData = "{""title"":""foo"",""body"":""bar"",""userId"":1}"
http.Send postData
WScript.Echo "Status: " & http.Status
WScript.Echo "Response: " & http.ResponseText
Set http = Nothing
The script sets the Content-Type header to indicate JSON data. The request body contains properly formatted JSON. The server responds with the created resource including an assigned ID. This pattern works with most REST APIs.
Handling Request Headers
This example demonstrates setting and reading HTTP headers. It shows both sending custom headers and examining response headers. The script includes a User-Agent header and displays all response headers.
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "https://httpbin.org/get", False
http.SetRequestHeader "User-Agent", "MyVBScriptClient/1.0"
http.Send
WScript.Echo "Status: " & http.Status
WScript.Echo "All Headers: " & http.GetAllResponseHeaders()
WScript.Echo "Content-Type: " & http.GetResponseHeader("Content-Type")
Set http = Nothing
The script sets a custom User-Agent string before sending the request. After receiving the response, it displays all headers and a specific header value. Header handling is essential for proper API communication and web scraping.
Error Handling in Requests
This example shows proper error handling for HTTP requests. It demonstrates checking the status code and handling potential errors. The script attempts to access a non-existent URL and handles the 404 error gracefully.
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "https://jsonplaceholder.typicode.com/nonexistent", False
http.Send
If Err.Number <> 0 Then
WScript.Echo "Error: " & Err.Description
ElseIf http.Status >= 400 Then
WScript.Echo "HTTP Error: " & http.Status & " " & http.StatusText
Else
WScript.Echo "Success: " & http.ResponseText
End If
Set http = Nothing
The script uses On Error Resume Next to prevent crashes from
network errors. It checks both VBScript errors and HTTP status codes. This
approach ensures robust script execution even when requests fail.
Downloading Binary Data
This example demonstrates downloading binary data (like an image) and saving it
to a file. It shows how to handle binary responses using
ResponseBody. The script downloads a small image and saves it
locally.
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "https://httpbin.org/image/png", False
http.Send
If http.Status = 200 Then
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1 ' Binary
stream.Open
stream.Write http.ResponseBody
stream.SaveToFile "downloaded.png", 2 ' Overwrite
stream.Close
WScript.Echo "Image saved successfully"
Else
WScript.Echo "Download failed: " & http.Status
End If
Set stream = Nothing
Set http = Nothing
The script uses ADODB.Stream to handle the binary response data.
ResponseBody returns the raw bytes of the response. This technique
works for any binary file type including images, PDFs, and executables.
Source
In this article, we have explored the WinHttp.WinHttpRequest.5.1
object in VBScript. From simple GET requests to binary downloads, these examples
demonstrate powerful web capabilities. With this knowledge, you can automate web
interactions and integrate web services into your scripts effectively.
Author
List all VBScript tutorials.