ZetCode

VBScript Get 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 Get 方法是 MSXML2.XMLHTTP 对象的一部分。它将 HTTP GET 请求发送到指定的 URL 并检索响应。此方法常用于网络抓取、API 交互和获取远程资源。默认情况下,它以同步方式工作,但可以配置为异步操作。

Get 对于 VBScript 中的客户端-服务器通信至关重要。它支持各种 HTTP 操作和响应处理。本教程将通过实际示例涵盖 Get 方法,以演示其在不同场景下的用法。

Get 方法概述

Get 方法向指定的 URL 发起 HTTP GET 请求。它可以通过 VBScript 中的 MSXML2.XMLHTTP 对象进行访问。该方法从指定资源检索数据而不修改它。

主要功能包括支持 HTTP/HTTPS 协议和各种响应格式。它可以处理文本、XML、JSON 和二进制数据。理解此方法有助于创建健壮的网络交互脚本。该方法默认是同步的,但支持异步操作。

基本 HTTP GET 请求

此示例演示了使用 Get 获取网页内容的简单方法。它展示了如何创建 XMLHTTP 对象、发送请求以及读取响应。响应文本将显示在控制台中。

basic_get.vbs
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://example.com", False
http.Send

WScript.Echo http.responseText

Set http = Nothing

该脚本创建一个 XMLHTTP 对象,并使用 "GET" 方法调用 Open。第三个参数(False)使请求同步。Send 执行请求,responseText 包含服务器的响应。

带查询参数的 GET 请求

此示例展示了如何在 GET 请求中附加查询参数。参数在 URL 的问号后添加。多个参数用和号分隔。

get_with_params.vbs
Set http = CreateObject("MSXML2.XMLHTTP")
url = "https://api.example.com/data?name=John&age=30"
http.Open "GET", url, False
http.Send

WScript.Echo "Status: " & http.status
WScript.Echo "Response: " & http.responseText

Set http = Nothing

URL 包含查询参数 "name=John" 和 "age=30"。脚本同时显示 HTTP 状态码和响应文本。此格式对于 REST API 请求很常见。始终对参数值中的特殊字符进行 URL 编码。

处理 JSON 响应

此示例演示了如何处理 GET 请求的 JSON 响应。使用 ScriptControl 对象解析响应。这允许像普通对象一样访问 JSON 属性。

json_response.vbs
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.example.com/users/1", False
http.Send

Set sc = CreateObject("MSScriptControl.ScriptControl")
sc.Language = "JScript"
Set user = sc.Eval("(" & http.responseText & ")")

WScript.Echo "User: " & user.name & ", Email: " & user.email

Set sc = Nothing
Set http = Nothing

该脚本以 JSON 格式获取用户数据。ScriptControl 将 JSON 字符串转换为对象。使用点表示法访问属性。这种方法简化了 VBScript 中使用 JSON API 的工作。

带请求头的 GET 请求

此示例展示了如何在 GET 请求中添加自定义请求头。请求头在打开请求后、发送请求之前设置。常见的请求头包括 Authorization 和 Content-Type。

get_with_headers.vbs
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.example.com/protected", False
http.setRequestHeader "Authorization", "Bearer abc123"
http.setRequestHeader "Accept", "application/json"
http.Send

WScript.Echo "Status: " & http.status
WScript.Echo "Response: " & http.responseText

Set http = Nothing

脚本在发送请求之前设置 Authorization 和 Accept 请求头。请求头会改变服务器处理请求的方式。Authorization 请求头对于受保护的资源很常见。始终确保敏感请求头信息的安全。

异步 GET 请求

此示例演示了如何使用 onreadystatechange 事件发送异步 GET 请求。脚本在等待响应的同时继续执行。响应就绪时,事件处理程序将处理响应。

async_get.vbs
Set http = CreateObject("MSXML2.XMLHTTP")

Sub Handler()
    If http.readyState = 4 Then
        WScript.Echo "Response: " & http.responseText
        WScript.Quit
    End If
End Sub

http.onreadystatechange = GetRef("Handler")
http.Open "GET", "https://example.com", True
http.Send

WScript.Echo "Waiting for response..."
While True
    WScript.Sleep 100
Wend

脚本在 Open 中将 True 作为异步参数。处理程序检查 readyState 是否完成(值为 4)。这种方法可以防止网络操作期间的阻塞。主循环保持脚本运行,直到响应到达。

来源

MSXML2.XMLHTTP 文档

在本文中,我们探讨了 VBScript 中的 Get 方法,涵盖了其用法和实际应用。从简单的请求到高级的异步操作,这些示例展示了网络交互的能力。有了这些知识,您就可以通过健壮的 HTTP 通信来增强您的脚本。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有多年的编程经验。我从 2007 年开始撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面有八年以上的经验。

列出所有 VBScript 教程