none
CreateObject("MSXML2.XMLHTTP") - Limpar cache RRS feed

  • 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
    Loop 

    Obs

    Identifiquei que no código hml da página consta os parâmetros abaixo

    <meta http-equiv="cache-control" content=-"no-cache" />


    QRD

    terça-feira, 11 de outubro de 2016 16:46

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

    terça-feira, 11 de outubro de 2016 21:00
    Moderador
  • 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

    quinta-feira, 13 de outubro de 2016 09:56
  • 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

    quinta-feira, 13 de outubro de 2016 14:50
    Moderador