2009-08-12 21 views
8

Używam "WinHttp.WinHttpRequest.5.1" do wysyłania żądań HTTP POST z VBA w Excelu. Ale nie udało mi się zrobić tego dla protokołu HTTPS, ponieważ otrzymałem błąd certyfikatu SSL.Żądanie HTTPS POST przy użyciu VBA dla Excela

Jaki kod VBA używałbyś do negocjowania połączenia SSL z witryną VBA w Excelu?

+1

Proszę napisać jakiś kod? Ponadto jest "WinHttp.WinHttpRequest.5.1" składnik COM? gdzie go znaleźć? – shahkalpesh

Odpowiedz

8

Obiekt WinHttpRequest ma metodę SetClientCertificate. Spróbuj tego przykład kodu pobranej z MSDN (próbowałem w celu dostosowania go do 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

Chociaż nie był używany przez komponent COM (WinHttpRequest), wydaje się, trzeba zadzwonić do SetClientCertificate przed wywołaniem wysłać, zgodnie z linkiem.

Czy to pomaga?

2

Mam taką samą sytuację (wyślij żądanie http z VBA w programie Excel); Stworzyłem trzy obiekty:

Set HttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") 

- dla klasy zapytania HTTP i

Set fsobj = CreateObject("Scripting.FileSystemObject") 
Set txtobj = fso.OpenTextFile("C:\PKCERT.PEM") 

- aby dostać się do zmiennej treścią certyfikatu, aby przekazać je do HttpReq.SetClientCertificate,

certificate_data = txtobj.ReadAll 
HttpReq.SetClientCertificate (certificate_content) 

Dzięki temu mogę przesłać żądanie wraz z jego certyfikatem klucza publicznego, jak zwykle,

HttpReq.Send 

P.S. Znalazłem scenariusz pod numerem http://www.808.dk/?code-simplewinhttprequest - w moim przypadku działało dobrze, mam też nadzieję.