Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA Excel выгрузка больших файлов, Не получается выгрузить большие файлы Msxml2.ServerXMLHTTP.6.0
 
Добрый день. Столкнулся с проблемой. Написал скрипт выгрузки  и сохранения файлов с внутреннего сайта компании. Структура кода следующая:
Код
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 загружает файлы существенно быстрее чем мой код.
Изменено: ANDREY - 16.08.2022 16:43:41
Получение параметров Cookies
 
При парсинге сайта арбитрточкару не могу решить следующую задачу. При запросе 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):
Код
Pragma: no-cache
Content-Length: 4298
Content-Type: text/html; charset=utf-8
Set-Cookie: ASP.NET_SessionId=onva11syoaf5yei0dtdb0mps; path=/; HttpOnly
Set-Cookie: ASP.NET_SessionId=onva11syoaf5yei0dtdb0mps; path=/; HttpOnly
Set-Cookie: CUID=f6e62d6a-38a2-4421-8da5-38ef0bc1b04c:dLSyS9fefhpkRtWAe2Sfyw==; domain=.arbitr.ru; expires=Wed, 11-Feb-2032 11:51:18 GMT; path=/; HttpOnly
Set-Cookie: .ASPXAUTH=fixcookie; domain=.kad.arbitr.ru; path=/; expires=Tue, 02-Apr-2012 14:12:08 GMT; HttpOnly
content-security-policy: upgrade-insecure-requests

Как я могу получить полный пакет Cookies (в том числе pr_fp    wasm   rcid) для формирования правильного запроса POST ?

Парсинг сайта arbitr VBA, Не получается получить правильный отклик от сайта
 
Добрый день. Третий день мучаю проблему и никак не могу разобраться.
Излазил много форумов, ответ найти не смог. Задача получить ответ с сайта ras arbitr ru.

Вот тот код, который написан:

Код
Sub arbitr()

 

Dim httpObject As Object

Dim
sGetResult As Variant

'Set
httpObject = CreateObject("MSXML2.XMLHTTP")

Set
httpObject = CreateObject("Msxml2.ServerXMLHTTP.6.0")

'Set
httpObject = CreateObject("WinHttp.WinHttpRequest.5.1")

 

httpObject.Open
"POST", "http://ras.arbitr.ru/Ras/Search", False

httpObject.setRequestHeader
"Host", "ras.arbitr.ru"

httpObject.setRequestHeader
"Connection", "keep-alive"

httpObject.setRequestHeader
"Content-Length", "201"

httpObject.setRequestHeader
"Accept", "application/json, text/javascript, */*"

httpObject.setRequestHeader
"X-Requested-With", "XMLHttpRequest"

httpObject.setRequestHeader
"User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"

httpObject.setRequestHeader
"Content-Type", "application/json" '; charset=utf-8"

httpObject.setRequestHeader
"Origin", "https://ras.arbitr.ru"

httpObject.setRequestHeader
"Sec-Fetch-Site", "same-Origin"

httpObject.setRequestHeader
"Sec-Fetch-Mode", "cors"

httpObject.setRequestHeader
"Sec-Fetch-Dest", "empty"

httpObject.setRequestHeader
"Referer", "https://ras.arbitr.ru/"

'httpObject.setRequestHeader
"Accept-Encoding", "gzip , deflate, br"

httpObject.setRequestHeader
"Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"

httpObject.setRequestHeader
"Cookie", _

"ASP.NET_SessionId=lfd20vhxrqz1y01towgyovgz;
CUID=c1d8de6b-b120-4c38-80c5-b00314807c75:pYVAtsY2lnncvav/Ih/t5w==; __utmz=14300007.1642747586.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided);
__utmc=14300007; _ga=GA1.2.855320026.1642747586; tmr_lvidTS=1642747788613;
tmr_lvid=38f17b338dbe5024194dc13ad97f1368; _ym_uid=1642747789708820668;
_ym_d=1642747789;
pr_fp=e96f3347f23da682373ee1c149eda3ce025ec93c053a947e4fec828b166330d3;
is_agree_privacy_policy=true;
.ASPXAUTH=48089F490BB8A2ADF54199E1042EC1EB883678393734D8693A96228A0BBF176B5A39E8B407FA2E2F444B93CD3C2DB2FA1FE0F54E362A35A783E4789F221799A3936B92980E96D06D668526AA05362ADF1D2F83A3C32FB6745242F302BC63B4B0BBCE45B5;
_gid=GA1.2.517942562.1643617454;
__utma=14300007.855320026.1642747586.1643093404.1643635736.4;
KadLVCards=%d0%9041-58578%2f2021; _fbp=fb.1.1643636579482.1085817934;
_ym_isad=2; tmr_detect=0%7C1643693617619;
rcid=839229d1-138c-4f49-8920-cbe70a95b100;
wasm=d1ed79c6d1cdb40f83ada9318c1cd9b0; tmr_reqNum=65; _gat=1"

payload1 =
"{""GroupByCase"":false,""Count"":25,""Page"":1,""Courts"":[""ASMO""],""DateFrom"":""2000-01-01T00:00:00"",""DateTo"":""2030-01-01T23:59:59"",""Sides"":[],""Judges"":[],""Cases"":[],""Text"":""""}"

Dim
payload() As Byte

payload =
StrConv(payload1, vbFromUnicode)

httpObject.Send
(payload)

sGetResult =
httpObject.responseText

Debug.Print
sGetResult

Set
httpObject = Nothing

 

End Sub

В ответ на запрос через браузер получаю JSON с 25 записями о делах. В ответ на запрос из Excel получаю не связанную с payload информацию.

Страницы: 1
Наверх