Lecture à partir d'une URL de Connexion Java
Je suis en train de lire le code html à partir d'une URL de Connexion. Dans un cas, le fichier html, je suis en train de lire comprend 5 sauts de ligne avant le doc de la déclaration de type. Dans ce cas, le lecteur d'entrée déclenche une exception pour les expressions du FOLKLORE.
URL pageUrl =
new URL(
"http://www.nytimes.com/2011/03/15/sports/basketball/15nbaround.html"
);
URLConnection getConn = pageUrl.openConnection();
getConn.connect();
DataInputStream dis = new DataInputStream(getConn.getInputStream());
//some read method here
Quelqu'un a couru dans un problème comme celui-ci?
URL pageUrl = new URL("http://www.nytimes.com/2011/03/15/sports/basketball/15nbaround.html");
URLConnection getConn = pageUrl.openConnection();
getConn.connect();
DataInputStream dis = new DataInputStream(getConn.getInputStream());
String urlData = "";
while ((urlData = dis.readUTF()) != null)
System.out.println(urlData);
//exception levée
java.io.EOFException
à java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
à java.io.DataInputStream.readUTF(DataInputStream.java:572)
à java.io.DataInputStream.readUTF(DataInputStream.java:547)
dans le cas de bufferedreader, il répond juste nulle et ne continue pas
pageUrl = new URL("http://www.nytimes.com/2011/03/15/sports/basketball/15nbaround.html");
URLConnection getConn = pageUrl.openConnection();
getConn.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(getConn.getInputStream()));
String urlData = "";
while(true)
urlData = br.readLine();
System.out.println(urlData);
sorties de nulle
Les sauts de ligne ne sont pas des expressions du FOLKLORE. Peut-être poster votre lecture de code et l'exception, elle est à jeter?
Je suis d'accord avec le commentaire ci-dessus de Brian R., sans la trace de la pile, il est difficile de dire quel est le problème. Aussi, je ne suis pas sûr de savoir pourquoi vous avez besoin d'utiliser un DataInputStream à lire HTML. C'est pour la lecture de Java les types primitifs (binaire) la plupart du temps. Si vous voulez le lire ligne par ligne, BufferedReader est mieux (non dépréciés) choix.
bufferedreader sorties de nulle
Je suis d'accord avec le commentaire ci-dessus de Brian R., sans la trace de la pile, il est difficile de dire quel est le problème. Aussi, je ne suis pas sûr de savoir pourquoi vous avez besoin d'utiliser un DataInputStream à lire HTML. C'est pour la lecture de Java les types primitifs (binaire) la plupart du temps. Si vous voulez le lire ligne par ligne, BufferedReader est mieux (non dépréciés) choix.
bufferedreader sorties de nulle
OriginalL'auteur Penny | 2011-03-20
Vous devez vous connecter pour publier un commentaire.
Vous utilisez
DataInputStream
de lire les données qui n'a pas été codé à l'aide deDataOutputStream
. Examiner le comportement documenté pour votre appel àDataInputStream#readUtf()
; il lit d'abord à deux octets pour former un entier 16 bits, en indiquant le nombre d'octets qui suivent comprenant l'UTF-chaîne codée. Les données que vous êtes en train de lire depuis le serveur HTTP n'est pas encodés dans ce format.Au lieu de cela, le serveur HTTP d'envoi des en-têtes codé en ASCII, par RFC 2616 sections 6.1 et 2.2. Vous avez besoin de lire les en-têtes de texte, puis de déterminer comment le corps du message ("entité") est codée.
OriginalL'auteur seh
Cela fonctionne bien:
OriginalL'auteur duffymo
Ce:
Fonctionne parfaitement. L'URL que vous fournissez, cependant, ne retourne rien.
Ok merci tout le monde. Je n'avais pas remarqué la 301, mais maintenant, je l'ai corrigé
OriginalL'auteur Brian Roach