|
|||||||
|
|
|
![]() |
|
|
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: 16:15.




















