我将非常感谢任何可能帮助我解决问题的帮助。
从 Excel VBA 代码中,我需要从 HTTPS 站点https://redmine.itransition.com/下载和解析 CSV 文件。我尝试使用 WinHTTP 来获取文件。但是,我不明白为什么身份验证不起作用。这是一段相关代码:
TargetURL = "https://redmine.itransition.com/projects/pmct/time_entries.csv"
Set HTTPReq = CreateObject("WinHttp.WinHttpRequest.5.1")
HTTPReq.Option(4) = 13056 ' WinHttpRequestOption_SslErrorIgnoreFlags 13056: ignore all err, 0: accept no err
HTTPReq.Open "GET", TargetURL, False
HTTPReq.SetCredentials "UN", "PW", 0
HTTPReq.send
返回以下响应(仅列出某些字符串):
Content-Type: text/html; charset=utf-8
Status: 406
X-Runtime: 5
但是,如果我在成功使用手动身份验证后从 Firefox cookie 发送“Cookie”字符串
HTTPReq.setRequestHeader "Cookie", SetCookieString
HTTPReq.send
我很容易得到预期的文件。当然我对这样的解决方案不满意,并希望执行真正的 WinHTTP 身份验证。但是,我无法理解代码中有什么问题或遗漏了什么。很可能我必须使用.SetClientCertificate
方法,但这对我来说不清楚 - 需要哪个证书?
或者,更笼统地说:我应该使用哪些 WinHTTP 方法或函数进行调试,以找出哪个步骤阻塞/不正确并阻止我进行正确的身份验证?我花了 2 周时间通过 MSDN 和各种资源寻找,但仍然没有解决方案。
提前感谢您的建议!