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

VBA调用UPS API超时,需捕获SEND阶段错误求解决方案

UPS API迁移至Windows Server 2019后偶发超时问题解决方案

问题背景

原Windows Server 2012R2环境下UPS API运行正常,迁移至Windows Server 2019通过任务计划执行时,调用API或获取Token达到一定次数后会偶发操作超时错误,错误触发在MSXML2.ServerXMLHTTP对象的send步骤,重试可恢复,但原有On Error语句无法捕获该错误。已排除API调用频次超限问题,且尝试过以Windows Server 2008R2模式运行任务计划,问题仍存在。

可能原因及解决步骤

1. 强制指定TLS协议版本

Windows Server 2019默认TLS配置与2012R2存在差异,UPS API可能要求使用TLS 1.2及以上版本,而旧版MSXML2.ServerXMLHTTP可能未自动启用。在send前添加TLS版本强制配置:

  • 使用SetOption 2, 131072指定启用TLS 1.2(对应数值:TLS1.0=1048576,TLS1.1=524288,TLS1.2=131072)

2. 修复错误捕获逻辑

原有错误捕获仅覆盖send瞬间,未捕获运行时错误。需扩展错误捕获范围,记录错误编号及描述,避免仅依赖status判断:

  • 在send前后记录Err.Number和Err.Description,优先判断是否存在运行时错误

3. 优化对象释放与连接池管理

多次调用后未释放MSXML2.ServerXMLHTTP对象可能导致连接池耗尽,引发超时。每次请求完成后需显式释放对象:

  • 使用Set xmlHttp = Nothing销毁对象,释放占用的连接资源

4. 调整任务计划权限配置

Windows Server 2019的UAC及网络权限控制更严格,需确保任务计划运行账户具备足够权限:

  • 勾选「不管用户是否登录都运行」
  • 启用「使用最高权限运行」
  • 确认运行账户有网络访问权限(如可正常访问UPS API域名)

5. 使用高版本MSXML2组件

旧版MSXML2.ServerXMLHTTP在Server 2019存在兼容性问题,改用MSXML2.ServerXMLHTTP.6.0版本:

  • 替换CreateObject("MSXML2.ServerXMLHTTP")为CreateObject("MSXML2.ServerXMLHTTP.6.0")

修改后的代码示例

Dim xmlHttp, errNum, errDesc
Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")

With xmlHttp
    .Open "GET", "https://onlinetools.ups.com/api/track/v1/details/...", False
    ' 强制启用TLS 1.2
    .SetOption 2, 131072
    .setRequestHeader "Authorization", "Bearer " & strClientToken
    .setRequestHeader "test", "string"
    .setRequestHeader "trans", "testing"
    
    On Error Resume Next
    .send
    errNum = Err.Number
    errDesc = Err.Description
    On Error GoTo 0
    
    ' 优先判断运行时错误(如超时)
    If errNum <> 0 Then
        ' 可添加重试逻辑,比如限制重试次数
        WScript.Echo "请求错误: " & errDesc
        GoTo RetryLogic
    End If
    
    If .status = 200 Then
        ' 处理返回数据逻辑
    Else
        GoTo CheckConnection
    End If
End With

' 显式释放对象
Set xmlHttp = Nothing

RetryLogic:
' 实现自定义重试逻辑,比如延迟后重新执行请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:05:07