2009-08-12 33 views
8

Tôi sử dụng "WinHttp.WinHttpRequest.5.1" để gửi yêu cầu HTTP POST từ VBA trong Excel. Nhưng tôi không thể quản lý nó cho HTTPS, vì tôi đã nhận được lỗi chứng chỉ SSL.Yêu cầu POST HTTPS bằng cách sử dụng VBA cho Excel

Mã VBA nào bạn sẽ sử dụng để thương lượng kết nối SSL với trang web từ VBA trong Excel?

+1

Bạn có thể đăng một số mã không? Ngoài ra, là "WinHttp.WinHttpRequest.5.1" một thành phần COM? nơi để tìm thấy nó? – shahkalpesh

Trả lời

8

Đối tượng WinHttpRequest có phương thức SetClientCertificate. Hãy thử mã này ví dụ lấy từ MSDN (Tôi cố gắng để thích nghi với nó cho 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

Trong khi tôi đã không sử dụng các thành phần COM (WinHttpRequest), có vẻ như bạn cần một cuộc gọi đến SetClientCertificate trước khi gọi gửi, theo liên kết.

Điều đó có hữu ích không?

2

Tôi có cùng một tình huống (gửi yêu cầu http từ VBA trong Excel); Tôi tạo ra ba đối tượng:

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

- cho lớp yêu cầu http, và

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

- để có được vào một biến nội dung giấy chứng nhận, để vượt qua nó để HttpReq.SetClientCertificate,

certificate_data = txtobj.ReadAll 
HttpReq.SetClientCertificate (certificate_content) 

Vì vậy, tôi có thể gửi yêu cầu bao gồm chứng chỉ khóa công khai, như thường lệ,

HttpReq.Send 

P.S. Tôi tìm thấy một kịch bản tại http://www.808.dk/?code-simplewinhttprequest - nó làm việc tốt trong trường hợp của tôi, hy vọng trong của bạn quá.

Các vấn đề liên quan