我使用“WinHttp.WinHttpRequest.5.1”在Excel的VBA中发送HTTP POST请求。 但是我无法处理HTTPS,因为我收到了SSL证书错误。
你会使用什么VBA代码来从Excel的VBA中与一个网站协商建立SSL连接呢?
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()
我有相同的情况(从Excel中的VBA发送http请求);我创建了三个对象:
Set HttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
以及
Set fsobj = CreateObject("Scripting.FileSystemObject")
Set txtobj = fso.OpenTextFile("C:\PKCERT.PEM")
-- 要将证书内容存入变量中,并将其传递给HttpReq.SetClientCertificate
,
certificate_data = txtobj.ReadAll
HttpReq.SetClientCertificate (certificate_content)
因此,我可以像往常一样发送请求,包括它的公钥证书。
HttpReq.Send
P.S. 我在http://www.808.dk/?code-simplewinhttprequest找到了一个脚本 - 在我的情况下它运行良好,希望在您的情况下也是如此。