|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
Java e protocollo HTTP.
Salve a tutti,
stavo pensando di scrivere una piccola applicazione in Java che controlli l'header di una pagina trasmessa via http periodicamente e segnali con un popup o un trillo se questa è stata aggiornata dal precedente controllo. L'algoritmo è chiaramente semplice ma non so nulla su quali librerie si usino per mandare messaggi con protocollo http con Java. Mi sapreste dare qualche dritta? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
in realtà mi va benissimo un codice del tipo:
Codice:
try { long lm = 0; URL url = new URL("http://www.sito.com/pagina.htm"); for (;;) { URLConnection connection = url.openConnection(); connection.connect(); long nm = connection.getLastModified(); if(lm != nm) { JOptionPane.showMessageDialog(null, "Sito aggiornato!"); lm = nm; } else JOptionPane.showMessageDialog(null, "Sito non aggiornato!"); Thread.sleep(5000); } } catch (MalformedURLException e) {} catch (IOException e) {} catch (InterruptedException e) {} |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
Riaccendo questo thread per una questione che mi sta creando dei problemi.
Il mio programmino monitora degli URL e notifica all'utente se sono stati aggiornati andando a recuperare la pagina d'interesse e guardando il campo last modified del protocollo http. Il semplice codice è il seguente: Codice:
public boolean isChanged() { try { URLConnection connection = getUrl().openConnection(); connection.connect(); Date lm = new Date(connection.getLastModified()); if(lm.compareTo(this.getLastModified()) > 0) { this.setLastModified(lm); return true; } return false; } catch (IOException ex) { return false; } } Ad esempio quella di hwupgrade... Nello scrivere queste righe sono giunto alla conclusione che è ovvio quello che mi accade: le pagine dinamiche vengono generate su richiesta e quindi il campo last modified non ha molto senso. Rigiro la domanda allora: come posso sopperire a questa problematica? Ovvero, io devo scoprire se la pagina è stata modificata, potrebbe bastare verificarne il content length? Certo non è "chiave primaria" di una pagina, però non vedo soluzioni migliori. Tuttavia mi chiedo anche se posso rendermi conto in qualche modo di che tipo è una pagina. Questo per utilizzare ancora il vecchio metodo (last modified) per le pagine statiche e il nuovo appena descritto, visto che non infallibile, per quelle dinamiche... In realtà a pensarci bene mi sembra impossibile ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Mmmm... non sono espertissimo in problematiche di questo tipo, comunque provo a darti un'idea: potresti memorizzare una specie di "hash" (generato con una funzione abbastanza veloce) della pagina la prima volta che la ottieni (magari basta farlo del solo header) e poi verificare quando la richiedi se è diverso da quello che hai già memorizzato.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
non mi sembra una cattiva idea.
Anche se in effetti l'header http, se non ricordo male, contiene la data di quando è stata inviata la risposta e di conseguenza ad ogni richiesta l'header è differente. Potrei comunque basarmi sul contenuto della pagina e farne un hash...ma che funzione di hash sarebbe opportuno usare? Devo dire che brancolo un po' nel buio e forse è meglio tornare all'idea del content size. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 437
|
come sospettavo, mi devo basare sul contenuto della pagina html. Tanto la probababilità che una pagina modificata occupi lo stesso spazio è abbastanza bassa.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:38.