Je demande une page Web qui envoie un codage de contenu My Code: P> try {
URLConnection connection = new URL("http://jquery.org").openConnection();
String html = "";
BufferedReader in = null;
connection.setReadTimeout(10000);
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null){
html+=inputLine+"\n";
}
in.close();
System.out.println(html);
System.exit(0);
} catch (IOException ex) {
Logger.getLogger(Crawler.class.getName()).log(Level.SEVERE, null, ex);
}
3 Réponses :
Il y a une classe pour cela: GzipInputStream . C'est un introuvable code> et est donc très transparent à utiliser. P>
Pour le faire fonctionner dans les deux cas, vous devez examiner l'en-tête «Compte-codage» qui est renvoyé. Si sa valeur est "gzip", vous devez utiliser le gzipinputtream, sinon pas.
En fait, c'est la réponse de PB2Q, mais je poste le code complet des futurs lecteurs
Travaillé pour moi. Juste pour ajouter à cela, la forme compressée peut être x-gzip code> aussi. Mais merci beaucoup.
Il y a deux cas avec encodage de contenu: gzip en-tête p>
Si les données déjà compressées (par application), le codage de contenu: l'en-tête GIZP entraînera des données comprimées à nouveau. Son double compresshed.it est parce que compression HTTP p> li>
Si les données ne sont pas compressées par application, encodage de contenu: GIZP entraînera la compresse des données (GZIP) et il sera automatiquement décompressé (UN-ZIP) avant qu'il ne atteigne le client. Un-Zip est une fonction par défaut disponible dans la plupart des navigateurs Web. Le navigateur fera l'UN-ZIP s'il trouve l'encodage de contenu: l'en-tête GIZP dans la réponse. P> LI> ol>