telecharger une page web - C++ - Programmation
Marsh Posté le 05-05-2005 à 13:03:29
hum verifie si ya pas des caractères spéciaux dans ton url qui seraient susceptibles d'être interprétés par ton compilo. Sinon pour la fin de ligne, j'aurais plutôt mis \r\n mais bon.
Marsh Posté le 05-05-2005 à 21:00:30
jan0 a écrit : hum verifie si ya pas des caractères spéciaux dans ton url qui seraient susceptibles d'être interprétés par ton compilo. Sinon pour la fin de ligne, j'aurais plutôt mis \r\n mais bon. |
j'ai essayé avec des \r\n mais ca ne change rien et il ne semble pas y avoir de caracteres speciaux ( tu peut verifier j'ai donnée l'url )
Marsh Posté le 05-05-2005 à 21:03:20
carot0 a écrit : en requete "GET http://xoap.weather.com/weather/lo [...] y=0&unit=m HTTP/1.0\n\n"; |
C'est pas la peine de préciser le nom du serveur, tu es déjà dessus. Fais plutot :
"GET /weather/local/FRXX0274?cc=*&par=0&prod=xoap&key=0&unit=m HTTP/1.0\n\n";
Marsh Posté le 05-05-2005 à 21:23:55
ya peut être un truc spécifique a mettre dans l'en-tete http, on sait jamais. Tu peux essayer de sniffer le traffic avec ethereal en affichant la page avec ton browser
Citation : http://xoap.weather.com/weather/lo [...] y=0&unit=m |
voila ce que me donne le plugin httpheaders pour firefox ( très pratique d'ailleurs)
en espèrant que ca puisse t'aider
Marsh Posté le 06-05-2005 à 12:46:26
il y a des chances que le site teste l'user agent pour etre sur que ce soit un navigateur qui accede aux données et pas un bot, ou une appli tierce.
nous on a le probleme contraire avec les site WAP, on doit faire passer le navigateur pour un telephone pour aller sur les sites
essaye de te faire passer pour un navigateur
je ne saurais comment te dire par contre
Marsh Posté le 06-05-2005 à 12:53:57
nekromanttiK a écrit : |
ben suffit de modifier le user-agent, j'ai oui dire que certains plugins utilisaient ce genre de ficelle...
Marsh Posté le 06-05-2005 à 14:23:20
ce que je voulais dire c'est comment le faire specifiquement dans son programme (en c++).
en fait, en regardant un peu sur google, c'est simplement dans la requete à envoyer.
Marsh Posté le 07-05-2005 à 09:22:10
nekromanttiK a écrit : ce que je voulais dire c'est comment le faire specifiquement dans son programme (en c++). |
e nfait pas besoin, j'ai changé ma requete en ca : "GET /weather/lo [...] y=0&unit=m HTTP/1.0\r\nHost: xoap.weather.com\r\n\r\n";
par contre je comprends pas si je remplace HTTP/1.0 par HTTP/1.1 bas ca marche pas une idée
Marsh Posté le 30-06-2005 à 10:37:53
Salut tout le monde !
j'ai repris le mem code que toi, j'ai copié les header de firefox : ca marche sur certain site (genre celui que tu donnes en exemple), mais pas sur d'autres : www.trup.net : on dirait que le contenu est crypté ou compressé...
quelqu'un a une idée de comment le récupérer nickel ?
les header arrives correctement, mais pas la page... je vous le mets en dessous :
Citation : |
Marsh Posté le 30-06-2005 à 10:44:27
C'est tout simplement gzippé ( en même temps, c'est marqué dans le header... ), il me semble que dans ta requète tu peut préciser que tu veut pas de contenu gzippé (cf. la RFC du protocole HTTP ) sinon c'est pas sorcier a décompresser avec la lib kivabieng ...
Marsh Posté le 30-06-2005 à 10:46:51
akewea a écrit : Salut tout le monde !
|
Effectivement, il y a de fortes chances que ce soit encoder
Edit :
Marsh Posté le 30-06-2005 à 11:06:10
0x90 a écrit : C'est tout simplement gzippé ( en même temps, c'est marqué dans le header... ), il me semble que dans ta requète tu peut préciser que tu veut pas de contenu gzippé (cf. la RFC du protocole HTTP ) sinon c'est pas sorcier a décompresser avec la lib kivabieng ... |
il suffit aussi de ne pas prétendre supporter des fonctionnalités qu'on ne supporte pas
Marsh Posté le 30-06-2005 à 11:10:18
merci pour la précision, et désolé pour l'evidence... c'est bien ce qu'il me semblait...
Pour la décompresion, j'ai jamais fait... un petit coup de pouce que quelqu'un ?
Merci !
Marsh Posté le 30-06-2005 à 13:04:25
akewea a écrit : merci pour la précision, et désolé pour l'evidence... c'est bien ce qu'il me semblait... |
je pense qu'avec ca dans en plus ta requete ca peut aider :
Code :
|
Marsh Posté le 30-06-2005 à 14:14:54
En fait, j'ai trouvé ce qui clochait : quand j'enlèvevait le "Accept-Encoding", rien n'arrivait à part les en-tête, d'où ma demande de décompression. En mettant un boucle sur la reception des données, cela fonctionne...
Je pense que c'etait la page qui était plus grande que mon buffer... Maintenant, ca marche à merveille ! et sans accepter les données compressées....
Merci à tous pour votre aide !
Marsh Posté le 05-05-2005 à 02:23:41
slt tlm, voila je veux telecharger une page web pour en extraire des données pour un programme.
j'ai reussi mon code tout marche mais voila je rencontre un probleme precisement avec le site qui m'interesse.
j'ai realisé mes test a aprtir de ce site www.facultyof1000.com
avec du gethostbyname("www.facultyof1000.com" );
et une requete http "GET http://www.facultyof1000.com/whatsmyip.asp HTTP/1.0\n\n";
bon la tout marche avec des cout j'ai tout le contenu qui s'affiche ( d'ailleur si quelqu'un connait une solution simple pour viré l'entete du html, vous savez le "HTTP/1.1 200 OK......." )
je met l'adresse du site qui m'iteresse
gethostbyname("xoap.weather.com" );
et en requete "GET http://xoap.weather.com/weather/lo [...] y=0&unit=m HTTP/1.0\n\n";
mais voila quand je lis ce qui arrive a l'ecrant ce n'est pas le contenu de la page ( qui existe avec le navigateur on tombe dessus ) mais une page qui dirait plutot que la page n'existe pas sur le serveur !
est ce quelqu'un voit d'ou peut venir mon probleme ?
---------------
In a world without walls and fences, who needs Windows and Gates