веб-сайт требует входа в систему, затем перенаправляет вас на другой URL-адрес, а затем загружает файл
эта функция отлично работает с URL-адресом без перенаправления, но не в моем случае
Function DownloadFile(URL As String, Path As String, UserName As String, Password As String) As Boolean
DownloadFile = False
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("MSXML2.ServerXMLHTTP.6.0")
WinHttpReq.Open "GET", URL, False, UserName, Password
WinHttpReq.send
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody
oStream.SaveToFile Path, 2
oStream.Close
DownloadFile = True
End Function
когда я пробую этот код, статус 401, даже если я использую имя пользователя и пароль?
Function CheckStatus(ByVal strUrl As String, ByVal UserName As String, ByVal Password As String) As String
Const WinHttpRequestOption_EnableRedirects = 6
Dim oHttp As Object
Set oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oHttp.Option(WinHttpRequestOption_EnableRedirects) = True
oHttp.Open "GET", strUrl, False, UserName, Password
oHttp.send
CheckStatus = oHttp.Status
End Function
WinHttp.WinHttpRequest
и включите опцию Follow-Redirects. Либо так, либо продолжайте работать с объектомMSXML2.ServerXMLHTTP
и смотрите статус ответа (301 или 302) и заголовки ответа (Location
), т.е. следуйте перенаправлениям вручную. - person Tomalak   schedule 05.01.2020CheckHyperlink
? Кроме того, я не вижу, чтобы вы использовали тамUserName
иPassword
, поэтому неудивительно, что вы получаете ответ 401 Unauthorized. Очередной раз. В каждом отдельном запросе должны быть имя пользователя и пароль. (Кроме того, похоже, что это код копирования и вставки, а не код, который вы написали сами.) - person Tomalak   schedule 05.01.2020