【问题标题】:HTTPS POST request using VBA for Excel使用 VBA for Excel 的 HTTPS POST 请求
【发布时间】:2010-11-18 20:32:33
【问题描述】:

我使用“WinHttp.WinHttpRequest.5.1”从 Excel 中的 VBA 发送 HTTP POST 请求。 但由于收到 SSL 证书错误,我无法为 HTTPS 执行此操作。

您将使用什么 VBA 代码来协商从 Excel 中的 VBA 到网站的 SSL 连接?

【问题讨论】:

  • 你能发布一些代码吗?另外,“WinHttp.WinHttpRequest.5.1”是COM组件吗?在哪里可以找到它?

标签: excel vba post https


【解决方案1】:

WinHttpRequest 对象有一个SetClientCertificate 方法。试试这个取自 MSDN 的代码示例(我尝试将其改编为 VBA):

' Instantiate a WinHttpRequest object. '
Dim HttpReq as new ActiveXObject("WinHttp.WinHttpRequest.5.1")

' Open an HTTP connection. '
HttpReq.Open("GET", "https://www.test.com/", false)

' Select a client certificate. '
HttpReq.SetClientCertificate("LOCAL_MACHINE\Personal\My Certificate")

' Send the HTTP Request. '
HttpReq.Send()

【讨论】:

    【解决方案2】:

    虽然我没有使用 COM 组件 (WinHttpRequest),但根据链接,您似乎需要在调用 send 之前调用 SetClientCertificate

    这有帮助吗?

    【讨论】:

      【解决方案3】:

      我有同样的情况(从 Excel 中的 VBA 发送 http 请求);我创建了三个对象:

      Set HttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") 
      

      --对于http请求类,和

      Set fsobj = CreateObject("Scripting.FileSystemObject")
      Set txtobj = fso.OpenTextFile("C:\PKCERT.PEM")
      

      -- 将证书内容放入变量中,将其传递给HttpReq.SetClientCertificate

      certificate_data = txtobj.ReadAll
      HttpReq.SetClientCertificate (certificate_content)
      

      所以我可以像往常一样发送包括其公钥证书的请求,

      HttpReq.Send
      

      附:我在http://www.808.dk/?code-simplewinhttprequest 找到了一个脚本——在我的情况下它运行良好,希望你也一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-04
        • 1970-01-01
        • 2013-05-30
        • 2013-10-12
        • 1970-01-01
        • 2021-06-02
        • 1970-01-01
        相关资源
        最近更新 更多