You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用VBA发送带请求体的GET请求?

问题解答

为什么GET请求的请求体被忽略?

  • HTTP标准规范中,GET请求的设计初衷是用于获取资源,通常不应该携带请求体,大部分HTTP客户端(包括你使用的Msxml2.XMLHTTP)都会遵循这个规范,自动忽略GET请求中传入的请求体内容。
  • Msxml2.XMLHTTP组件的实现逻辑明确:当请求方法为GET时,send方法的参数会被直接丢弃,不会将其作为请求体发送。

如何用VBA发送带请求体的GET请求?

如果目标API明确要求GET请求携带JSON请求体,可以换用WinHttp.WinHttpRequest.5.1组件,它支持在GET请求中发送请求体。示例代码如下:

Dim strJSONText As String, strURL As String

strURL = "https://<domain>/<some>/<path>"
' 注意JSON规范要求使用双引号,修正格式避免解析错误
strJSONText = "{""<parameter>"":""<value>""}"

Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
objWinHttp.Open "GET", strURL, False
objWinHttp.SetRequestHeader "Accept", "application/json"
objWinHttp.SetRequestHeader "Content-Type", "application/json"
' WinHttpRequest支持GET请求发送请求体
objWinHttp.Send strJSONText

' 可在此处理响应内容
' Debug.Print objWinHttp.ResponseText

注意事项

  • 这种GET请求带请求体的做法不符合HTTP标准规范,可能在部分代理服务器或其他客户端中出现兼容性问题,建议优先和API提供者确认是否可以改用POST请求传递参数。
  • 务必保证JSON格式正确,必须用双引号包裹键名和字符串类型的值,否则可能导致API解析失败。

内容的提问来源于stack exchange,提问作者arjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:05:15