java inputstream imprimer le contenu de la console
sock = new Socket("www.google.com", 80);
out = new BufferedOutputStream(sock.getOutputStream());
in = new BufferedInputStream(sock.getInputStream());
Quand j'essaie de faire de l'impression du contenu à l'intérieur "dans" comme ci-dessous
BufferedInputStream bin = new BufferedInputStream(in);
int b;
while ( ( b = bin.read() ) != -1 )
{
char c = (char)b;
System.err.print(""+(char)b); //This prints out content that is unreadable.
//Isn't it supposed to print out html tag?
}
Merci de montrer un court mais exemple. Vous n'avez pas montré la façon dont vous êtes l'envoi de Google la demande. Si vous spécifiez que vous pouvez gérer au format gzip de données, par exemple, vous auriez besoin de décompresser le résultat en sortie.
(Notez également que votre code actuel est effectivement en supposant que l'ISO-Latin-1.)
salut, après j'ouvre un Socket(); je fais un "obtenir index.html" et l'envoyer à "sortir" de suivre en essayant d'obtenir le "in" comme le code ci-dessus. je n'ai pas de handle spécifié au format gzip, comment savoir si elle est au format gzip?
Si le contenu est au format gzip, il sera indiqué dans l'en-tête (qui ne sera pas). HTTP 0.9 syntaxe n'a pas tendance à travailler plus. Vous avez besoin de quelque chose comme "GET /index.html HTTP1.0\r\n\r\n", ou mieux "GET /index.html HTTP1.1\r\nHost: www.google.com\r\n\r\n" (IIRC).
(Notez également que votre code actuel est effectivement en supposant que l'ISO-Latin-1.)
salut, après j'ouvre un Socket(); je fais un "obtenir index.html" et l'envoyer à "sortir" de suivre en essayant d'obtenir le "in" comme le code ci-dessus. je n'ai pas de handle spécifié au format gzip, comment savoir si elle est au format gzip?
Si le contenu est au format gzip, il sera indiqué dans l'en-tête (qui ne sera pas). HTTP 0.9 syntaxe n'a pas tendance à travailler plus. Vous avez besoin de quelque chose comme "GET /index.html HTTP1.0\r\n\r\n", ou mieux "GET /index.html HTTP1.1\r\nHost: www.google.com\r\n\r\n" (IIRC).
OriginalL'auteur cometta | 2009-07-05
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez imprimer le contenu d'une page web, vous avez besoin de travailler avec le HTTP protocole. Vous n'avez pas à mettre en œuvre vous-même, la meilleure façon est d'utiliser des implémentations existantes telles que l'API java HttpURLConnection ou Apache HttpClient
Voici un exemple de comment le faire avec HttpURLConnection:
Comme écrit ci-dessus, vous pouvez économiser le trafic par l'ajout de l'-tête Accept-Encoding et de vérifier la
Encodage de contenu d'en-tête de la réponse.
Voici un HttpClient Exemple, pris dans ici:
HttpURLConnection ne pas gérer le format de contenu. J'ai appris à la dure.
OriginalL'auteur David Rabinowitz
Si vous ce que pour récupérer le contenu d'une page web, vous devriez jeter un oeil à apache httpclient au lieu de coder vous-même, attendez-vous à des fins d'apprentissage ou de toute autre bonne raison.
OriginalL'auteur Tim Büthe
Très facile de créer une Chaîne de caractères à partir d'un Flux à l'aide de Java 8 Flux API:
À l'aide de l'Ide, j'ai même pouvez définir ce soit de débogage de l'expression:
Je suppose que dans Eclipse ne fonctionne, il similaires.
OriginalL'auteur gorefest