VBScript ResponseStream Property
last modified April 9, 2025
The ResponseStream property in VBScript is part of the
ServerXMLHTTP object. It provides access to the raw binary data
returned from HTTP requests. This property is essential for handling non-text
responses like files, images, or binary data. It allows direct access to the
response body as a stream.
ResponseStream is read-only and available after a successful HTTP
request. It's commonly used with ADODB.Stream for processing binary data. This
tutorial covers ResponseStream with practical examples to
demonstrate its usage.
ResponseStream Property Overview
The ResponseStream property returns an IStream interface to the
HTTP response body. It's available through the ServerXMLHTTP object
after sending a request. The property provides binary access to response data
regardless of content type.
Key features include direct binary data access and support for large responses.
It doesn't automatically decode or interpret the response content.
ResponseStream works with both text and binary HTTP responses.
Understanding this property helps create robust HTTP clients.
Basic Text Response Reading
This example demonstrates reading a text response using
ResponseStream. It shows how to convert the binary stream to a
string. The script makes an HTTP GET request and reads the response body.
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.Open "GET", "https://example.com", False
http.Send
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1 ' Binary
stream.Open
stream.Write http.ResponseStream
stream.Position = 0
stream.Type = 2 ' Text
responseText = stream.ReadText
WScript.Echo responseText
stream.Close
Set stream = Nothing
Set http = Nothing
The script creates a ServerXMLHTTP object and sends a GET request.
It uses ADODB.Stream to read the ResponseStream. The
binary data is converted to text for display. This approach works for text-based
HTTP responses.
Downloading Binary File
This example shows how to download a binary file using
ResponseStream. It demonstrates saving the response directly to a
file. The script downloads an image and saves it locally.
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.Open "GET", "https://example.com/image.jpg", False
http.Send
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1 ' Binary
stream.Open
stream.Write http.ResponseStream
stream.SaveToFile "C:\temp\image.jpg", 2 ' Overwrite
stream.Close
Set stream = Nothing
Set http = Nothing
WScript.Echo "File downloaded successfully"
The script makes a GET request for an image file. The binary response is written
directly to a file using SaveToFile. This method preserves the
original binary data without modification. It's ideal for downloading files.
Processing Large Responses
ResponseStream is efficient for large responses as it doesn't load
everything into memory. This example shows chunked reading of a large response.
It processes the stream in manageable portions.
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.Open "GET", "https://example.com/largefile.bin", False
http.Send
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1 ' Binary
stream.Open
stream.Write http.ResponseStream
stream.Position = 0
chunkSize = 4096
Do Until stream.EOS
chunk = stream.Read(chunkSize)
' Process chunk here
WScript.Echo "Read " & LenB(chunk) & " bytes"
Loop
stream.Close
Set stream = Nothing
Set http = Nothing
The script reads the response in 4KB chunks using a loop. This approach is
memory-efficient for large files. Each chunk can be processed individually
without loading the entire response. The EOS property checks for
end-of-stream.
Checking Response Availability
This example demonstrates checking if ResponseStream contains data.
It shows proper error handling for empty responses. The script verifies the
response before processing.
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.Open "GET", "https://example.com/nodata", False
http.Send
If http.Status = 200 Then
If Not http.ResponseStream Is Nothing Then
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1
stream.Open
stream.Write http.ResponseStream
If stream.Size > 0 Then
WScript.Echo "Response contains data"
Else
WScript.Echo "Empty response"
End If
stream.Close
Else
WScript.Echo "No response stream available"
End If
Else
WScript.Echo "HTTP error: " & http.Status
End If
Set stream = Nothing
Set http = Nothing
The script checks the HTTP status code first. Then it verifies the
ResponseStream exists. Finally, it checks the stream size for
actual content. This comprehensive checking prevents errors with empty
responses.
Reading Response Headers with Stream
This example shows how to access response headers while using
ResponseStream. It demonstrates reading both headers and body from
an HTTP response. The script displays headers before processing the body.
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.Open "GET", "https://example.com", False
http.Send
' Display all response headers
WScript.Echo "Response Headers:"
WScript.Echo http.getAllResponseHeaders()
' Process response body
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1
stream.Open
stream.Write http.ResponseStream
stream.Position = 0
stream.Type = 2
WScript.Echo "Response Body:"
WScript.Echo stream.ReadText
stream.Close
Set stream = Nothing
Set http = Nothing
The script first displays all response headers using
getAllResponseHeaders. Then it processes the response body through
ResponseStream. This approach allows complete access to both
headers and body content. Headers often contain important metadata about the
response.
Source
In this article, we have explored the ResponseStream property in
VBScript, covering its usage and practical applications. From text responses to
binary file downloads, these examples demonstrate reliable HTTP response
handling. With this knowledge, you can enhance your HTTP client scripts with
robust response processing.
Author
List all VBScript tutorials.