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

如何用VBA-Web Library构造含嵌套字典和列表的DHL API POST请求体

使用VBA-Web库构建带嵌套字典和列表的DHL API POST请求体

核心实现逻辑

VBA-Web库通过WebDictionary(对应JSON对象/嵌套字典)和WebCollection(对应JSON数组/列表)的嵌套组合,就能轻松构建复杂的POST请求体,无需手动拼接JSON字符串。

完整代码示例

Sub SendDHLNestedPostRequest()
    ' 初始化VBA-Web核心对象
    Dim ApiClient As New WebClient
    Dim PostRequest As New WebRequest
    Dim RootBody As New WebDictionary
    Dim ShipmentInfo As New WebDictionary
    Dim PackagesList As New WebCollection
    Dim Package1 As New WebDictionary
    Dim Package2 As New WebDictionary
    
    ' 配置请求基础参数
    ApiClient.BaseUrl = "https://api.dhl.com/your-specific-endpoint"
    PostRequest.Method = WebMethod.HttpPost
    PostRequest.ContentType = "application/json"
    
    ' 构建嵌套的包裹1信息
    Package1.Add "weight", 2.5
    Set Package1("dimensions") = New WebDictionary
    Package1("dimensions").Add "length", 30
    Package1("dimensions").Add "width", 20
    Package1("dimensions").Add "height", 15
    
    ' 构建嵌套的包裹2信息
    Package2.Add "weight", 1.8
    Set Package2("dimensions") = New WebDictionary
    Package2("dimensions").Add "length", 25
    Package2("dimensions").Add "width", 15
    Package2("dimensions").Add "height", 10
    
    ' 将包裹添加到列表(对应JSON数组)
    PackagesList.Add Package1
    PackagesList.Add Package2
    
    ' 构建运单主信息(包含嵌套地址和包裹列表)
    ShipmentInfo.Add "shipperName", "John Doe"
    Set ShipmentInfo("shipperAddress") = New WebDictionary
    ShipmentInfo("shipperAddress").Add "street", "123 Main St"
    ShipmentInfo("shipperAddress").Add "city", "New York"
    ShipmentInfo("shipperAddress").Add "postalCode", "10001"
    ShipmentInfo.Add "packages", PackagesList
    
    ' 组装根请求体
    RootBody.Add "shipmentRequest", ShipmentInfo
    RootBody.Add "requestId", "REQ-20240520-001"
    
    ' 绑定请求体并发送请求
    Set PostRequest.Body = RootBody
    Dim ApiResponse As WebResponse
    Set ApiResponse = ApiClient.Execute(PostRequest)
    
    ' 处理响应结果
    If ApiResponse.StatusCode = WebStatusCode.Ok Then
        Debug.Print "请求成功:" & ApiResponse.Content
    Else
        Debug.Print "请求失败:" & ApiResponse.StatusCode & " - " & ApiResponse.Content
    End If
End Sub

关键细节说明

  • WebDictionary:用于构建JSON键值对结构,支持嵌套其他WebDictionary实现多层对象(比如示例中的dimensions、shipperAddress)。
  • WebCollection:用于构建JSON数组结构,直接通过Add方法将WebDictionary类型的元素加入,实现列表效果(比如多个包裹信息)。
  • 自动序列化:将根WebDictionary赋值给Request.Body后,VBA-Web会自动将整个嵌套结构序列化为标准JSON格式,无需手动处理字符串拼接。

注意事项

  • 确保已在VBA项目中引用VBA-Web库(通过「工具」→「引用」选择对应库)。
  • 需根据DHL API的实际字段要求,调整代码中的键名、数据类型和嵌套层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:35:01