2017-02-06 1 views
1

В продолжение к моему предыдущему вопросу: Automating File Download of a link that looks like this: https://www.domain.com/TableData/TableA.csvЗагрузка файла с WinHttp с помощью POST/GET и заголовки (с VBA)

Я учусь больше о заголовках, отправляемых с 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 
+1

Также может быть установлен файл cookie сеанса. Посмотрите там тоже. –

+0

Спасибо Райан за ваше предложение. У меня все еще такая же проблема, но теперь вы заставляете меня задаться вопросом, нужно ли мне устанавливать все файлы cookie, так как на этом сайте есть несколько файлов cookie. Как установить все из них? – Seraphim

+1

Посмотрите на этот вопрос. Я спросил по этой теме. http://stackoverflow.com/questions/38726408/retrieve-all-cookies-from-internet-explorer –

ответ

0

БОЛЬШОЕ СПАСИБО К РЯНОМ ДЕТЯМ! Задача решена.

Мне нужно было установить два конкретных файла cookie и изменить реальную ссылку для входа - использование основного домена не работало.

Для всех, кто находит это сообщение в один прекрасный день - просмотрите файлы cookie с помощью инструментов разработчика и найдите те, которые вам нужно передать при входе в систему. Я лично проверил их, открыв окно с заголовками ответов, которые я сравнил с заголовками ответов, которые я обычно получаю при входе в систему вручную.

Смежные вопросы