Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2024, 20:47   #1
Smirnoff1812
Новичок
Джуниор
 
Регистрация: 12.08.2024
Сообщений: 4
По умолчанию Отключить кеширование обращений к HTML

Здравствуйте! Может быть, сможете помочь.

Столкнулся с проблемой. При парсинге данных из интернета при частых запросах (например, раз в секунду) данные перестают обновляться. Лечится закрыванием и открыванием окна.

Получается, что запросы кешируются, и как часто не делай запрос, данные будут приходить не с сайта, а из кеша. Я прочитал, что если добавить к запросу произвольный параметр через "?", то запрос будет восприниматься, как новый. Но без толку, всё равно кеш мешает.

Поэтому вопрос: как можно отключить кеш в VBA? Если знаете ответ, то подскажите, пожалуйста, простым языком, я очень далёк от программирования и с трудом пробираюсь через эти дебри.

Вот код и во вложении файл (нужно переименовать в xlsm).

___________________________________ _______
Dim s As String
Dim ss As String
Dim URL As String

Function GetHTTPResponse(ByVal sURL As String) As String
On Error Resume Next
Set oXMLHTTP = CreateObject("WinHttp.WinHttpReques t.5.1")
With oXMLHTTP
.Open "GET", sURL, False
.send
GetHTTPResponse = .responseText
End With
Set oXMLHTTP = Nothing
End Function

Sub Кнопка1_Щелчок()

Let Rqst = Int((100 * Rnd) + 1)

Let URL = "https://apicase.ru/btcusdt/txt" & "?ran=" & Right(Str(Rqst), Len(Str(Rqst)) - 1)

Let s = GetHTTPResponse(URL)

Cells(4, 15) = URL
Cells(4, 13) = s

End Sub
Вложения
Тип файла: txt Course.txt (20.1 Кб, 0 просмотров)
Smirnoff1812 вне форума Ответить с цитированием
Старый 14.08.2024, 18:42   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

чтобы этого избежать, первой строкой в функции GetHTTPResponse нужно сбрасывать кеш для этого URL
вызовом WinAPI функции
Код:
DeleteUrlCacheEntry URL
и в самое начало кода добавить определение функции
Код:
   Declare PtrSafe Function DeleteUrlCacheEntry Lib "Wininet.dll" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
PS: вообще-то кешируются только запросы, выполненные средствами CreateObject("MSXML2.XMLHTTP")
При использовании компонента WinHttpRequest.5.1 кеширования быть не должно (ибо тут используется другой стек протоколов)

Последний раз редактировалось EducatedFool; 14.08.2024 в 18:45.
EducatedFool вне форума Ответить с цитированием
Старый 15.08.2024, 17:49   #3
Smirnoff1812
Новичок
Джуниор
 
Регистрация: 12.08.2024
Сообщений: 4
По умолчанию

Большое спасибо, что откликнулись.

Всё добавил как вы сказали, но не получилось. Я обновляю запрос часто, но значение меняется редко, не каждый раз.

Вот, например, в этом источнике курс меняется несколько раз в секунду, цифры прямо мельтешат:

https://apicase.ru/kurs_bitkoina?ran=71

Но если я скачиваю HTML код в переменную, выделяю в этой переменной участок текста с курсом, то он по идее должен тоже меняться при каждом запросе, а по факту цифры одни и те же. Могут раз в 20-30 секунд обновиться.
Smirnoff1812 вне форума Ответить с цитированием
Старый 15.08.2024, 19:13   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Курс на странице, которую вы скачиваете, меняется примерно раз в минуту (и его получить не проблема, всё как вы делаете)
А то что вы видите в браузере, выводится совсем другой технологией (тут нужен совсем другой механизм - WebSocket, устанавливать соединение с wss://stream.binance.com:9443/ws/btcfdusd@bookTicker, оттуда непрерывным потоком данные идут с меняющимся курсом)
EducatedFool вне форума Ответить с цитированием
Старый 15.08.2024, 20:40   #5
Smirnoff1812
Новичок
Джуниор
 
Регистрация: 12.08.2024
Сообщений: 4
По умолчанию

Огромное спасибо!
Smirnoff1812 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отключить редирект для одного HTML-файла в .htaccess? Bel2535 PHP 0 19.03.2021 18:09
Полностью отключить автоформат HTML-кода Visual Studio 2013 OmegaBerkut ASP.NET 2 01.02.2019 11:34
количества обращений Arsenal2 SQL, базы данных 7 20.01.2015 10:38
Перехват обращений к реестру Fedor666 Win Api 2 17.10.2011 18:44
Отключить диалог со сведениями. Word 2003, HTML bro Microsoft Office Word 5 31.03.2011 10:58