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.