Inquiridor
CreateObject("MSXML2.XMLHTTP") - Limpar cache

Pergunta
-
Prezados,
Tenho um site (intranet) que é disponibilizadas algumas informações que faço uso. Este site sofre atualização a cada 10 minutos. E para informar que o dado está recente, capturo a data e hora da última atualização que é informada no site conforme abaixo
Atualizado em: 11/10/2016 às 07:34.13
A captura da informação, realizo com sucesso através do código abaixo. O problema é que quando ocorre uma atualização, o processo fica com a última informação e não captura a nova atualização. Não consegui encontrar alguma coisa para remover a informação anterior da memoria, destruir o objeto, limpar o cache... enfim, algo que eu consiga capturar a hora recente.
Hoje fazemos uma manobra de encerrar a aplicação e rodar o processo novamente para ela conseguir capturar os dados, o que torna uma tarefa inviavel.
Código
Const URL$ "http://meusite/home.php"
Const MASK$ = "Atualizado em:"
Dim txt as String, i as Long
With CreateObject("MSXML2.XMLHTTP")
.Open "GET, URL, False
.Send
txt = . ResponseText
End With
Do
i = Instr(i+1, txt, MASK)
If i = 0 Then
Exit Do
Else
i = i +1
Data = Mid$(txt, i + Len(MASK) + 3, 11)
Hora = Mid$(txt, i + Len(MASK) + 16, 11)
End-if
LoopObs
Identifiquei que no código hml da página consta os parâmetros abaixo
<meta http-equiv="cache-control" content=-"no-cache" />
QRD
Todas as Respostas
-
Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.
---
Tente usar o código abaixo:
Sub Main() Const URL$ = "http://meusite/home.php" Const MASK$ = "Atualizado em:" Dim txt As String, i As Long Dim Data, Hora Dim XmlRequest As Object Set XmlRequest = CreateObject("MSXML2.XMLHTTP") With XmlRequest .Open "GET, URL, False" .Send txt = .ResponseText End With Do i = InStr(i + 1, txt, MASK) If i = 0 Then Exit Do Else i = i + 1 Data = Mid$(txt, i + Len(MASK) + 3, 11) Hora = Mid$(txt, i + Len(MASK) + 16, 11) End If Loop Set XmlRequest = Nothing End Sub
http://www.ambienteoffice.com.br - http://www.clarian.com.br
-
Felipe,
Obrigado pela resposta.
Caso a página html não tiver nativo a tag abaixo de 'no-cache', existe algum código alternativo vba para tratar este problema?
<meta http-equiv="cache-control" content=-"no-cache" />
<meta content="-" http-equiv="cache-control" no-cache""="" />
QRD
-
Não entendi. O código que resolveu corrigiu o problema?
Sobre sua segunda dúvida, veja o link a seguir: http://stackoverflow.com/questions/5235464/how-to-make-microsoft-xmlhttprequest-honor-cache-control-directive
http://www.ambienteoffice.com.br - http://www.clarian.com.br