URL openStream
Résolu
fred
-
fred -
fred -
Salut la gang, j'aimerais savoir pourquoi ce code que tout le monde connaît ne marche pas pour ces liens "http://www.stl.laval.qc.ca/fr/horaires-et-trajets/autobus/stl/" et "http://www.stl.laval.qc.ca/fr/horaires-et-trajets/autobus/stl/choisissez-une-ligne-pour-connaitre-la-grille-horaire-complete/?route_id=31N" mais il marche pour "http://www.stl.laval.qc.ca".
Bref, c'est pour un travaux pratique, il faut que je lit tous les circuits sur le premier lien et les rajoutent au deuxième et après faire des traitement de données sur les horaires.
URL SiteWeb = new URL (URLlignes);
BufferedReader in = new BufferedReader(new InputStreamReader(SiteWeb.openStream()));
String ligne;
while ((ligne = in.readLine()) != null)
{
System.out.println(ligne);
}
Pourtant je suis capable de lire le code source et presque tous les liens sur ce site marche, sauf les deux que j'ai besoin!!??.
J'ai passé 3 heures à chercher et faire le debug sur netbeans. Dans le fond pour les deux liens que je vous ai mentionné plus haut, le programme de rentre pas dans la boucle while parce que ligne = null donc il n'y a rien dans le buffer.
Merci
Bref, c'est pour un travaux pratique, il faut que je lit tous les circuits sur le premier lien et les rajoutent au deuxième et après faire des traitement de données sur les horaires.
URL SiteWeb = new URL (URLlignes);
BufferedReader in = new BufferedReader(new InputStreamReader(SiteWeb.openStream()));
String ligne;
while ((ligne = in.readLine()) != null)
{
System.out.println(ligne);
}
Pourtant je suis capable de lire le code source et presque tous les liens sur ce site marche, sauf les deux que j'ai besoin!!??.
J'ai passé 3 heures à chercher et faire le debug sur netbeans. Dans le fond pour les deux liens que je vous ai mentionné plus haut, le programme de rentre pas dans la boucle while parce que ligne = null donc il n'y a rien dans le buffer.
Merci
A voir également:
- URL openStream
- Url - Guide
- Ping url ✓ - Forum Windows
- Comment changer url iptv ✓ - Forum Box et Streaming vidéo
- Url iptv - Forum Box et Streaming vidéo
- Atlas pro url serveur invalide - Forum TV & Vidéo
2 réponses
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é.
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.
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);
}