如何将cURL请求改写为MS Access VBA的WinHttp.WinHttpRequest.5.1代码
将PowerShell中的cURL请求转换为MS Access VBA代码(使用WinHttp.WinHttpRequest.5.1)
以下是对应你提供的cURL请求的VBA实现,完全匹配原请求的所有参数:
Sub GetExchangeRates() Dim httpRequest As Object Dim apiUrl As String Dim responseText As String ' 初始化WinHttpRequest对象 Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1") ' 对应cURL的`-k`参数:忽略SSL证书验证错误 httpRequest.SetOption 4, 13056 ' WINHTTP_OPTION_SECURITY_FLAGS = 4, SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x3300 (13056) ' 目标API地址(和cURL中的URL完全一致) apiUrl = "https://api.xxx.com/open/api/exchange-rates/v1/exchange-rates?validityDateTime=2023-03-30T06%3A00%3A00.000Z" ' 打开GET请求(对应cURL的`-X GET`) httpRequest.Open "GET", apiUrl, False ' 添加请求头,对应cURL中的`-H`参数 httpRequest.SetRequestHeader "accept", "*/*" httpRequest.SetRequestHeader "x-correlation-id", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" httpRequest.SetRequestHeader "x-api-key", "Bearer aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaa" ' 发送请求 httpRequest.Send ' 获取响应内容 responseText = httpRequest.ResponseText ' 这里可以添加处理响应的逻辑,比如输出到调试窗口 Debug.Print responseText ' 释放对象 Set httpRequest = Nothing End Sub
关键参数对应说明:
SetOption 4, 13056:对应cURL的-k(--insecure),用于忽略SSL证书验证问题,适合测试环境使用Open "GET", apiUrl, False:False表示同步请求,执行时会等待响应返回SetRequestHeader:逐一添加原cURL中指定的三个请求头,确保请求身份验证和格式符合API要求
你可以直接将这段代码复制到Access的VBA模块中,替换占位的x-correlation-id和x-api-key为实际值后运行。
内容的提问来源于stack exchange,提问作者ThomassoCZ
相关产品推荐
相关产品推荐

