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.