2009-08-12 334 views
8

我使用「WinHttp.WinHttpRequest.5.1」從Excel中的VBA發送HTTP POST請求。 但由於我收到SSL證書錯誤,所以我無法設置爲HTTPS。使用VBA for Excel的HTTPS POST請求

您將使用什麼VBA代碼來協商從Excel中的VBA到一個網站的SSL連接?

+1

你可以發佈一些代碼嗎?另外,「WinHttp.WinHttpRequest.5.1」是一個COM組件嗎?在哪裏找到它? – shahkalpesh 2009-08-12 05:42:01

回答

8

The WinHttpRequest object has a SetClientCertificate method。嘗試從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),看來你打電話發之前需要SetClientCertificate一個電話,根據鏈接。

這有幫助嗎?

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找到了一個腳本 - 在我的情況下工作得很好,也希望在你的腳本中。