пытается загрузить PDF-файл по URL-адресу. Кажется, я не могу пройти мимо экрана входа в систему, поскольку загруженный PDF-файл содержит только код для страницы входа, если я открою его в Блокноте. Я проверил почтовый запрос после входа в систему вручную и вставил его после «FormData». Я не уверен, имеет ли значение то, что я назвал этой переменной? В одном из сообщений, на которые я ссылаюсь ниже, он использовал "strAuthenticate".
Когда я просматриваю PDF-файл, который я хочу загрузить, в chrome DevTools, он говорит следующее:
<embed id="plugin" type="application/x-google-chrome-pdf"
src="***SAME AS FILE URL IN VBA CODE***"
stream-url="chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/761e8d06-3486-4bab-b043-df5b9a3c2510" headers="accept-ranges: bytes
cache-control: max-age=1, must-revalidate
content-length: 375845
content-type: application/pdf
date: Wed, 06 May 2020 23:35:10 GMT
etag: 1588701484391
expires: Thu, 07 May 2020 00:35:10 GMT
last-modified: Tue, 05 May 2020 17:58:04 GMT
p3p: policyref="/w3c/p3p.xml", CP="NON DSP CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT"
server: Microsoft-IIS/10.0
status: 200
x-content-type-options: nosniff
x-included-test: true
" background-color="0xFF525659" top-toolbar-height="56" javascript="allow" full-frame="">
Имеет ли значение, что PDF-файл является плагином, а не вложением. Также sr c - это сайт, который у меня есть в fileUrl в приведенном ниже коде.
Sub SaveFileFromURL()
Dim FileNum As Long
Dim FileData() As Byte
Dim WHTTP As Object
mainUrl = "https://www.website.com/j_security_check"
fileUrl = "https://www.website.com.com/controlFileRetrieve?ignorePresentViaObject=true&curDomId=111&posId=4574137"
filePath = "C:\myfile.pdf"
myuser = "xxxxxx"
mypass = "xxxxxx"
j_security_check = "j_username=" & myuser & "j_password=" & mypass
Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")
WHTTP.Open "POST", mainUrl, False 'WHTTP.Open "POST", fileUrl, False
WHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
WHTTP.send j_security_check
WHTTP.Open "GET", fileUrl, False
WHTTP.send
Debug.Print WHTTP.getAllResponseHeaders()
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
Ссылки, на которые я ссылался или на которые я смотрел:
VBA WinHTTP для загрузки файла с защищенного паролем веб-сайта https
Как сделать запрос POST на страницу, которая может перенаправить на страницу входа
Любая помощь приветствуется!