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

Excel VBA调用接口时部分接口返回值双引号被转义问题

VBA调用API时响应文本双引号被重复转义的问题

问题描述

使用MSXML2.XMLHTTP60对象调用多个API接口,核心调用代码如下:

req.Open "GET", url, False
req.setRequestHeader "Content-type", "application/json"
req.setRequestHeader "Accept", "application/json"
req.setRequestHeader "Authorization", "Bearer " & sessionId
req.send

其中一个接口返回的响应文本req.responseText中,所有双引号均被转义为\",示例响应如下:

[[{\"PK__REVFLAGID\":null,\"grp\":\"Implementation Tracking\",\"flag\":\"Green\",\"FLAG_DESCRIPTION\":null}]]

该问题仅在VBA环境中出现,Postman、PHP或cURL调用同一接口时,响应文本的双引号显示正常。

可能的原因与解决方法

  • 模拟标准User-Agent
    MSXML2.XMLHTTP60的默认User-Agent与Postman、浏览器等工具不同,部分接口会针对特定UA做额外的JSON转义处理。可手动设置User-Agent模拟其他工具:
req.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
  • 手动反转义处理
    若接口无法调整,可在获取响应后手动替换转义的双引号:
Dim cleanResponse As String
cleanResponse = Replace(req.responseText, "\""", """")
' 后续使用cleanResponse进行JSON解析或其他操作
  • 检查响应Content-Type
    确认接口返回的Content-Type是否为application/json,若返回text/plain,MSXML可能不会自动解析转义字符。可通过req.getResponseHeader("Content-Type")查看,若类型不符,可尝试强制按JSON格式处理响应。

  • 替换为ServerXMLHTTP对象
    部分场景下,MSXML2.ServerXMLHTTP60的解析行为与XMLHTTP60不同,可替换对象尝试:

Public req As New MSXML2.ServerXMLHTTP60

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:05:56