Я пытаюсь автоматизировать вход в систему и загружать данные для веб-сайта (https://indexes.nasdaqomx.com/ ). Мой код не проходит аутентификацию, в чем проблема, моя верхняя часть WinHttpReq.responseText говорит, как показано ниже:
</header>
<div class="container">
<div class="row-fluid spacer">
<div class="span12">
<p class="textCenter">
We're sorry your request could not be fulfilled. Rest assured we have been notifed and will resolve this issue shortly.
</p>
</div>
</div>
Мой код VBA выглядит следующим образом:
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub DownloadFile()
Dim myuser As String
Dim MyPass As String
Dim sHTML As String
myuser = "xxxxxx"
MyPass = "xxxxxx"
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "POST", "https://indexes.nasdaqomx.com/Account/LogOn", True
WinHttpReq.SetRequestHeader "Content-type", "application/x-www-form-urlencoded"
WinHttpReq.SetRequestHeader "Connection", "keep-alive"
WinHttpReq.send "UserName=xxxxxx&Password=xxxxxxx"
Sleep (6000)
Debug.Print WinHttpReq.readyState
If WinHttpReq.readyState = 4 Then
sHTML = WinHttpReq.responseText
'this below line result shows We're sorry your request could not be fulfilled
Debug.Print sHTML
End If
Sleep (5000) ' delay 4 second
WinHttpReq.Open "GET", "https://indexes.nasdaqomx.com/Index/ExportWeightings/NDX?tradeDate=2015-08-19T00:00:00.000&timeOfDay=SOD", True
Debug.Print WinHttpReq.readyState
WinHttpReq.SetRequestHeader "Connection", "keep-alive"
WinHttpReq.send
Sleep (5000) ' delay 4 second
Debug.Print WinHttpReq.readyState
MyURL = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody
' 1 = no overwrite, 2 = overwrite
oStream.SaveToFile "D:\Visual Basic Programming\Macro\nasdaqomx\SODWeightings_20150819_NDX.xlsx", 2
oStream.Close
End If
End Sub
Так в чем же проблема? У меня есть действительные учетные данные для этого, так как ручной вход работает нормально. Ниже приведен снимок экрана с html-кодом этой страницы. Он показывает какой-то код подтверждения запроса, но каждый раз, когда я замечаю, он меняется. Может ли кто-нибудь сказать мне, как программно выполнить вход на веб-страницу?