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

使用VBA通过POST发送JSON至API返回空值问题求助

问题排查:API接收JSON时返回空数组的解决办法

你的代码存在几个关键问题,导致API无法正确解析JSON数据,返回空数组,以下是具体修复方案:

1. JSON字符串构造错误

你拼接JSON的方式导致邮箱字段被包裹了双重双引号,属于无效JSON格式,API解析失败后返回空数组。

错误写法:

Json = "{""name"": ""Fulano"", ""email"":" + """""" + oExchUser.PrimarySmtpAddress + """""" + "}"

正确写法(遵循VBA双引号转义规则,两个双引号代表一个双引号):

Json = "{""name"": ""Fulano"", ""email"": """ & oExchUser.PrimarySmtpAddress & """}"

2. 未设置Content-Type请求头

发送JSON数据时,必须告知API请求体格式为application/json,否则API可能无法识别数据格式,导致解析失败。

在objHTTP.Open之后、objHTTP.Send之前添加:

objHTTP.SetRequestHeader "Content-Type", "application/json"

3. 异步请求的潜在问题

代码中使用了异步请求(Open方法第三个参数为True),若未处理异步回调,可能导致请求未完成就结束进程。建议改为同步请求(参数设为False),确保请求完整发送并可获取响应。

修改为:

objHTTP.Open "POST", Url, False

4. 添加响应排查代码

可以添加代码打印API的响应内容,帮助确认请求是否成功、数据是否被正确接收:

objHTTP.Send Json
' 打印响应信息到调试窗口
Debug.Print "状态码:" & objHTTP.Status
Debug.Print "响应内容:" & objHTTP.ResponseText

完整修正后的代码

Sub Show()
    Dim OL As Object, olAllUsers As Object, oExchUser As Object, oentry As Object
    Dim User As String
    Dim Json As String
    Dim objHTTP As Object
    
    Set OL = CreateObject("outlook.application")
    Set olAllUsers = OL.Session.AddressLists.Item("All Users").AddressEntries
    User = OL.Session.CurrentUser.Name
    Set oentry = olAllUsers.Item(User)
    Set oExchUser = oentry.GetExchangeUser()
    
    ' 正确构造JSON字符串
    Json = "{""name"": ""Fulano"", ""email"": """ & oExchUser.PrimarySmtpAddress & """}"
    
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    Url = "http://example"
    objHTTP.Open "POST", Url, False
    ' 设置Content-Type请求头
    objHTTP.SetRequestHeader "Content-Type", "application/json"
    objHTTP.Send Json
    
    ' 打印响应信息用于排查
    Debug.Print "状态码:" & objHTTP.Status
    Debug.Print "响应内容:" & objHTTP.ResponseText
    
    ' 释放对象
    Set objHTTP = Nothing
    Set oExchUser = Nothing
    Set oentry = Nothing
    Set olAllUsers = Nothing
    Set OL = Nothing
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:45:15