使用VBA for Excel的HTTPS POST请求

时间:2009-08-12 05:09:40

标签: excel vba post https

我使用“WinHttp.WinHttpRequest.5.1”从Excel中的VBA发送HTTP POST请求。 但我无法为HTTPS做这件事,因为我收到了SSL证书错误。

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

3 个答案:

答案 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找到了一个脚本 - 在我的情况下它运行正常,希望你也可以。