URL openStream
Résolu/Fermé2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 27/11/2014 à 08:15
Modifié par KX le 27/11/2014 à 08:15
Bonjour,
Il va falloir faire un code un peu plus long pour simuler plus précisément la requête HTTP, en particulier parce que ce que te renvoie le site dépend de ton navigateur web, donc si tu ne lui précises pas au minimum le header HTTP
Regarde du côté de la classe HttpURLConnection pour faire ça en Java.
La confiance n'exclut pas le contrôle
Il va falloir faire un code un peu plus long pour simuler plus précisément la requête HTTP, en particulier parce que ce que te renvoie le site dépend de ton navigateur web, donc si tu ne lui précises pas au minimum le header HTTP
User-Agent : Mozillail sera impossible pour le serveur de t'envoyer quoi que ce soit.
Regarde du côté de la classe HttpURLConnection pour faire ça en Java.
La confiance n'exclut pas le contrôle
J'ai oublié de vous dire que pour ces deux liens in.ready() = false, donc le buffer n'est pas près pour être lu. Avec un peu de recherche, j'ai vu que bufferReader contient un tableau de char de 8192 espaces. Dans le code source de mes deux lien, il y a des lignes avec plus de 27 000 caractères. J'ai donc augmenter la taille du buffer:
BufferedReader in = new BufferedReader(new InputStreamReader(SiteWeb.openStream()),30000);
mais le problème persiste, toutes mes lignes = null. Je ne vois vraiment pas ou est le problème parce que ce code marche sur tous les sites que j'ai testé.
BufferedReader in = new BufferedReader(new InputStreamReader(SiteWeb.openStream()),30000);
mais le problème persiste, toutes mes lignes = null. Je ne vois vraiment pas ou est le problème parce que ce code marche sur tous les sites que j'ai testé.
27 nov. 2014 à 19:04
Modifié par fred le 27/11/2014 à 19:16
27 nov. 2014 à 19:57
Remarque : maîtriser les headers des requêtes/réponses permettent de faire des opérations un peu complexe, comme se connecter avec un login/mot de passe, récupérer la session, etc.
27 nov. 2014 à 20:05
URL SiteWeb = new URL(URLlignes);
HttpURLConnection conn = (HttpURLConnection) SiteWeb.openConnection();
conn.setReadTimeout(5000);
conn.addRequestProperty("User-Agent", "Mozilla");
String ligne;
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
while ((ligne = in.readLine()) != null)
{
System.out.println(ligne);
}