作为对上一个问题的跟进:Automating File Download of a link that looks like this: https://www.domain.com/TableData/TableA.csv
我正在学习更多关于使用POST和GET发送的标题 - 但我不知道我需要知道什么。
到目前为止,我的代码都是在下载文件时使用的,但是上一个问题的问题仍然存在。当我在执行后打开下载的文件时,它会填充登录页面的html,就好像凭据不能通过POST登录一起工作。我怀疑我的问题在于strAuthenticate字符串,但我不确定。
Sub SaveFileFromURL()
Dim FileNum As Long
Dim FileData() As Byte
Dim WHTTP As Object
fileUrl = "https://www.ncci.com/Manuals/RateTableData/State/XX/XX.csv '%20
filePath = "C:\Apps\information.csv"
myuser = "xxxxxx"
mypass = "xxxxxx"
strAuthenticate = "sm_userid=xxxxx&sm_password=xxxxxx"
Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")
WHTTP.Open "POST", "https://www.ncci.com", False
WHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
WHTTP.send strAuthenticate
x = WHTTP.getResponseHeader("Set-Cookie")
MsgBox x
WHTTP.Open "GET", fileUrl, False
WHTTP.setRequestHeader "Cookie", x
WHTTP.send
FileData = WHTTP.responseBody
Set WHTTP = Nothing
FileNum = FreeFile
Open filePath For Binary Access Write As #FileNum
Put #FileNum, 1, FileData
Close #FileNum
MsgBox "File has been saved!", vbInformation, "Success"
End Sub
答案 0 :(得分:0)
非常感谢RYAN WILDRY!解决了问题。
我需要设置两个特定的Cookie并更改实际的登录链接 - 使用主域名无效。
对于有一天发现此帖子的其他人 - 使用开发人员工具查看Cookie并找到您需要传递登录的Cookie。我个人通过弹出一个响应标题的消息框来测试它们,我将其与手动登录时通常会得到的响应标题进行比较。