【问题标题】:XMLHttpRequest with Multiple Headers in Excel VBA在 Excel VBA 中具有多个标头的 XMLHttpRequest
【发布时间】:2021-02-16 10:42:42
【问题描述】:

我当前的代码是

Option Explicit


Sub VBA_API_JSON_TEST()

'Declare variables
Dim xml_obj As MSXML2.XMLHTTP60

'Create a new Request Object
Set xml_obj = New MSXML2.XMLHTTP60


 Dim base_url, param_header1, param_header2 As String
 
    'Define URL Components
    base_url = "https://..."
    
    param_header1 = XMLHttpRequest.SetRequestHeader("key", "1")
    param_header2 = XMLHttpRequest.SetRequestHeader("host", "abc.com")

我得到一个未使用 XMLHttpRequest 错误定义的变量。我以前没有使用过此代码,我不确定应该添加哪些附加代码,在其他示例中我没有看到附加代码。

'Combine all the different components into a single URL
    api_url = base_url + param_header1 + param_header2

任何帮助表示赞赏

【问题讨论】:

  • 应该是xml_obj.SetRequestHeader("x-rapidapi-key", "1") 你还没有声明或设置任何名为XMLHttpRequest 的变量我也不认为SetRequestHeader 返回任何东西,所以我不清楚你在尝试什么.如果您可以提供有关您想要做什么的更多信息(可能还有您的代码的其余部分),其他人可能会有建议。
  • 有了这个,我只是想验证我的 API 访问权限。我有一个 API,我需要用 url 发送两个标头(密钥和主机)。不幸的是,网络上很少有 VBA 示例使用代码发送两个带有 url 的标头。我发现的罕见示例有 XMLHttp.... 代码,但我以前没有这样做过,我试图将其全部保存在一个带有 VBA 的 Excel 文件中。
  • URL 参数和标头是两个独立的东西 - 它们不相关,因此您需要根据 API 文档使用其中一个或另一个。
  • 很遗憾没有用于 VBA 的文档
  • 您不需要特定于 VBA 的文档 - 只要有任何东西告诉您需要发送什么,然后就可以了(GET/POST?在 URL 中还是作为标题?)

标签: excel vba xmlhttprequest


【解决方案1】:

最后我发现按这个顺序排列代码可以得到 200 个响应(后来看了几个小时!):

Dim xml_obj As MSXML2.XMLHTTP60
Set xml_obj = New MSXML2.XMLHTTP60
base_url = "https://url_endpoint.com"
xml_obj.Open "GET", base_url
xml_obj.SetRequestHeader "key", "1234"
xml_obj.SetRequestHeader "host", "data"
xml_obj.Send

您还应该选择工具->参考 - VBA 项目库

Microsoft Office 1x.0 对象库, Microsoft Excel 1x.0 对象库, 微软脚本运行时, Microsoft XML v6.0 或其他版本

它们可能已经处于活动状态。感谢 Tim 对 xml_obj 的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多