Добрый день. Столкнулся с проблемой. Написал скрипт выгрузки и сохранения файлов с внутреннего сайта компании. Структура кода следующая:
Код
Public Function GetResult_Get_Save(sUrl As String, sFileName As String)
Dim httpObject1 As New MSXML2.ServerXMLHTTP60 'Object
Set httpObject1 = CreateObject("Msxml2.ServerXMLHTTP.6.0")
Set httpObject = Nothing
httpObject1.Open "GET", sUrl, False
httpObject1.setRequestHeader "accept", "*/*" '"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
httpObject1.setRequestHeader "accept-Encoding", "gzip , deflate, br"
httpObject1.setRequestHeader "accept-language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"
httpObject1.setRequestHeader "cache-Control", "no-cache"
httpObject1.setRequestHeader "cookie", ".........."
httpObject1.setRequestHeader "pragma", "no-cache"
httpObject1.setRequestHeader "referer", "...."
httpObject1.setRequestHeader "sec-ch-ua", """ Not A;Brand"";v=""99"", ""Chromium"";v=""98"", ""Google Chrome"";v=""98"""
httpObject1.setRequestHeader "Sec-ch-ua-mobile", "?0" '"Print 0"
httpObject1.setRequestHeader "sec-ch-ua-platform", """Windows"""
httpObject1.setRequestHeader "Sec-fetch-dest", "document"
httpObject1.setRequestHeader "Sec-fetch-Mode", "navigate"
httpObject1.setRequestHeader "Sec-fetch-site", "same-origin"
httpObject1.setRequestHeader "Sec-fetch-user", "?1" ' "Print 1"
httpObject1.setRequestHeader "upgrade-insecure-requests", "1"
httpObject1.setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"
httpObject1.sEnd
'httpObject1.waitForResponse (100)
Set ADOStream = CreateObject("ADODB.Stream")
Debug.Print httpObject1.responseText
ADOStream.Type = 1: ADOStream.Open
ADOStream.Write httpObject1.responseBody
ADOStream.SaveToFile "C:\_Project_\_tmp_\1\1\" & sFileName, 1
ADOStream.Close:
Set ADOStream = Nothing
Set httpObject1 = Nothing
sTest = "Ok"
End Function
В целом код работает, но есть ограничение по размеру файла. Файлы грузятся размером менее 80Мб. У меня же есть необходимость грузить файлы без ограничения по размеру. Я не исключаю, что эта проблема не совсем Excel, а взаимодействия с конкретной информсистемой, откуда я качаю информацию. Кто что может посоветовать? Что можно попробовать? и куда посмотреть?
Помимо прочего пробовал WinHttp.WinHttpRequest.5.1 и MSXML2.XMLHTTP. Для первого ситуация та же, для второго не получается загрузить файл.
В дополнение, Ошибка возникает на Send. Код ошибки 2147012744 "Сервер вернул недопустимый или нераспознанный ответ". Ошибка появляется на одном и том же закачиваемом файле через разное время...иногда это 3 мин, иногда 6 мин. Chrom загружает файлы существенно быстрее чем мой код.
При парсинге сайта арбитрточкару не могу решить следующую задачу. При запросе Post в RequestHeader используется Cookies. Без него не получается получить правильны ответ. Эти Cookie имеют время жизни, после чего требуется их обновить.
Через запрос GET и последующее .getAllResponseHeaders:
Код
Sub sGetCoockes()
Dim sGetResult As Variant
Dim httpObject As Object
Set httpObject = CreateObject("Msxml2.ServerXMLHTTP.6.0")
httpObject.Open "GET", "https://kad.arbitr.ru/", False
httpObject.setRequestHeader "Host", "kad.arbitr.ru"
httpObject.setRequestHeader "Content-type", "application/xml"
httpObject.send
sGetResult = httpObject.getAllResponseHeaders
Debug.Print sGetResult
Set httpObject = Nothing
End Sub
получается ответ, который содержит только два компонента (ASP.NET_SessionId и CUID):
Добрый день. Третий день мучаю проблему и никак не могу разобраться. Излазил много форумов, ответ найти не смог. Задача получить ответ с сайта ras arbitr ru.