Obtenir la date de Dernière modification d'une URL
J'ai trois code. C'est le premier pour lequel je reçois les informations de métadonnées d'une url et dans les métadonnées j'ai date de dernière modification aussi. Si je lance cette classe puis-je obtenir la dernière date de modification de l'url--
key:- Last-Modified
value:- 2011-10-21T03:18:28Z
Premier
public class App {
private static Map<String, String> metaData;
public static void main(String[] args) {
Tika t = new Tika();
Metadata md = new Metadata();
URL u = null;
try {
u = new URL("http://www.xyz.com/documents/files/xyz-china.pdf");
String content1= t.parseToString(u);
System.out.println("hello" +content1);
} catch (MalformedURLException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (TikaException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
try {
Reader r = t.parse(u.openStream(), md);
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
try {
for (String name : md.names()){
String value = md.get(name);
System.out.println("key:- " +name);
System.out.println("value:- " +value);
//getMetaData().put(name.toLowerCase(), md.get(name));
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Mais pour le deuxième exemple juste en dessous de cette lorsque j'exécute ce code et avec la même url. Je obtenir divers date de Dernière modification de cette URL. Comment assurez-vous lequel est le bon. Comme j'ai essayé d'ouvrir ce fichier pdf dans le navigateur, mais au lieu de s'ouvrir dans le navigateur. il est d'arriver à ouvrir avec Adobe PDF sur l'ordinateur n'est pas sur le navigateur, donc je ne suis pas en mesure de vérifier par le biais de firebug.
Deuxième Façon -
public class LastMod{
public static void main(String args[]) throws Exception {
URL url = new URL("http://www.xyz.com/documents/files/xyz-china.pdf");
System.out.println("URL:- " +url);
URLConnection connection = url.openConnection();
System.out.println(connection.getHeaderField("Last-Modified"));
}
}
Pour le dessus de l'un-je obtenir Las Mod date-
Thu, 03 Nov 2011 16:59:41 +0000
Troisième Voie--
public class Main{
public static void main(String args[]) throws Exception {
URL url = new URL("http://www.xyz.com/documents/files/xyz-china.pdf");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
long date = httpCon.getLastModified();
if (date == 0)
System.out.println("No last-modified information.");
else
System.out.println("Last-Modified: " + new Date(date));
}
}
Et par la troisième méthode, j'obtiens ça comme ça--
Last-Modified: Thu Nov 03 09:59:41 PDT 2011
Je suis confondre lequel est le bon. Je pense que d'abord on est bon. Toutes les suggestions seront appréciées..
Vous devez vous connecter pour publier un commentaire.
Le premier morceau de code des extraits de la date à partir des métadonnées du fichier PDF, tandis que les deux autres, obtenir des informations de l'en-têtes HTTP renvoyé par le serveur Web. Le premier est sans doute plus précis si vous voulez savoir quand le document a été créé/modifié.
La meilleure option est le troisième d'une
connection.getLastModified()
, parce qu'il est le plus facile à utiliser la méthode est le plus haut niveau d'abstraction. Tous les autres sont sur la baisse des niveaux d'abstraction: le premier lit les raw de réponse, et le deuxième lit les raw en-tête. Le troisième lit l'en-tête et la convertit en long.La différence entre les résultats est due à l'horaire. À l'aide de
new Date()
vous utilisez la machine virtuelle fuseau horaire par défaut. Préférez Calendrier, ou mieux joda-timeDateTime
qui soutien personnalisé des fuseaux horaires.La date de dernière modification devrait être en GMT (RFC 2822) de sorte que vous devriez obtenir comme ceci: