使用VBA for Excel发送HTTPS POST请求

11

我使用“WinHttp.WinHttpRequest.5.1”在Excel的VBA中发送HTTP POST请求。 但是我无法处理HTTPS,因为我收到了SSL证书错误。

你会使用什么VBA代码来从Excel的VBA中与一个网站协商建立SSL连接呢?


1
你能贴一些代码吗?另外,“WinHttp.WinHttpRequest.5.1”是一个COM组件吗?在哪里可以找到它? - shahkalpesh
3个回答

10

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

我有相同的情况(从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找到了一个脚本 - 在我的情况下它运行良好,希望在您的情况下也是如此。


2

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

这有帮助吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接