Socket - envoyer URL [C++] - C++ - Programmation
Marsh Posté le 04-04-2004 à 22:14:12
tu lui envoies une requete GET suivie de ton URL
faut potasser la RFC du protocole HTTP
Marsh Posté le 04-04-2004 à 22:17:28
si tu utilises les berkeley sockets, non, faut tout faire à la main
Marsh Posté le 04-04-2004 à 22:21:15
Je prends le socket qui se trouve sous l'onglet Internet du Builder 6.. TClientSocket.
Personne a un petit exemple? Surement qqun a déja fait cela nan?
Marsh Posté le 04-04-2004 à 22:24:16
avec un TClientSocket non, c'est bas niveau. tu dois quand même passer un GET à la main.
utilise un composent qui encapsule l'activeX d'IE
Marsh Posté le 04-04-2004 à 22:31:51
IdHTTP serait plus approprié à mon avis
Marsh Posté le 05-04-2004 à 12:45:08
Oui a présent sa marche!
Cela 'éxécute bien la page, mais il me fait l'erreur :
"302 moved temporarily"
Cela vient de quoi? Tout s'éxécute normalement! Merci
Marsh Posté le 05-04-2004 à 13:04:27
Ca vient pas de toi, mais du serveur web
L'erreur est expliquée ici :
http://www.checkupdown.com/status/E302.html
Marsh Posté le 06-04-2004 à 11:57:01
Write an HTTP data stream through that socket
C'est koi se data stream?
Marsh Posté le 06-04-2004 à 12:06:28
Ben c'est la requête que tu envoies au serveur
GET + url de la page
Marsh Posté le 06-04-2004 à 18:06:27
Ah ok! Ben tout me semble correct je ne vois pas l'erreur!!!
Marsh Posté le 06-04-2004 à 18:14:06
Je t'ai dit que l'erreur ne venait pas de toi mais du site. Si tu tapes l'URL de ce site dans un navigateur, tu auras également l'erreur 302, et le serveur te proposera une adresse alternative
Citation : |
Marsh Posté le 06-04-2004 à 18:18:44
faut que tu lise l'entete "Location: " de ta reponse, et il indiquera l'url vers laquelle il faut que tu fasse ta requete. Il faudra que tu gere ce type de redirection automatiquement (genre tu demande une URL, et tu suit la(les) redirection(s) jusqu'a avoir une reponse (200 ok). Et il faudra mettre une limite sur le nombre max de redirections que t'es pret à suivre aussi (pieges à robots...)
si tu obtient une erreur de type 4XX la ca veut dire que t'as merdé un truc (ca peut aussi vouloir dire que le lien est mort si c'est un 404)
Marsh Posté le 06-04-2004 à 23:25:45
cherche un tutorial HTTP
par exemple: http://www.jmarshall.com/easy/http/
je sais quelle librairie tu utilise, mais si c'est une librairie TCP il va falloir que tu implémente toute la couche HTTP, et si c'est une librairie HTTP (plus appropriée pour toi) il va tout de meme falloir que tu comprenne comment marche le HTTP pour comprendre les differents messages d'erreur
en gros tu a plusieurs type de code de reponse en HTTP (en tres gros et vague)
plage des 200: OK
plage des 300: redirection vers une autre URL
plage des 400: erreur du client (mauvaise requete, etc...)
plage des 500: erreur du serveur (cgi qui plante, etc...)
plage des 100: message d'info (continue, changement de protocole... pas la peine de s'attarder sur ceux la si ta librairie est au niveau HTTP)
donc la tu a recu une reponse de la plage des 300, et c'est la 302 (donc redirection temporaire). Ca veut donc dire que tu dois faire une requete vers une autre URL (qui est contenue dans les reponse, dans le champ Location et parfois aussi dans le corps de la reponse sous forme de lien HTML) pour recuperer le contenu que tu voulais. Les navigateurs comme IE ou mozzila font ca automatiquement et de maniere transparente pour l'utilisateur: parfois tu tappe une adresse dans la barre d'adresse et elle change pendant le téléchargement, ca veut dire qu'il y a eu redirection.
Souvent tu a des redirectiosn toutes betes que tu peux eviter, par exemple si tu demande "http://www.google.fr", tu a toutes les chances' d'etre rediriger directement vers "http://www.google.fr/" (juste le "/" final qui manquait).
Voila pour une explication rapide, mais de toutes facons je te conseil de lire un tutoriel complet
Marsh Posté le 04-04-2004 à 22:12:33
Voila je me suis connecter a un server avec un socket.
Maintenant je voudrais pouvoir envoyer une URL . (Que la page s'éxecuteen fait).
La page est sur le serveur que je me suis connecter.
Comment faire?