我使用“WinHttp.WinHttpRequest.5.1”从Excel中的VBA发送HTTP POST请求。 但我无法为HTTPS做这件事,因为我收到了SSL证书错误。
您将使用什么VBA代码与Excel中的VBA协商网站的SSL连接?
答案 0 :(得分:8)
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()
答案 1 :(得分:2)
虽然我没有使用COM组件(WinHttpRequest),但在调用send之前,您似乎需要根据链接调用SetClientCertificate。
这有帮助吗?
答案 2 :(得分:2)
我有相同的情况(从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
P.S。我在http://www.808.dk/?code-simplewinhttprequest找到了一个脚本 - 在我的情况下它运行正常,希望你也可以。