Création
d'entreprise
Posez votre question Signaler

Requête HTTP GET [Résolu]

TiuSh 3Messages postés 6 juillet 2009Date d'inscription - Dernière réponse le 7 juil. 2009 à 19:20
Bonjour,
Je suis en train de développer un serveur Web embarqué simplifié. Pour cela j'ai déjà réussi à interpréter et répondre aux requêtes GET quand il s'agit de pages HTML. Mais lorsque j'essaie de répondre à une requête GET concernant une image, seul le nom de l'image s'affiche dans mon navigateur.
Voici la réponse que j'envoie au client:
Requête :
GET /img.jpg (...)
Réponse :
HTTP/1.0 200 OK
Content-Length: 3032
Content-Type: image/jpeg
[contenu de l'image]
Est ce que j'ai oublié quelquechose?
Merci!
Lire la suite 

Requête HTTP GET »

Suggestions
6 réponses
Réponse
+0
moins plus
Tu termines bien chaque fin de ligne par \r\n ?

Bonne chance
Ajouter un commentaire
Réponse
+0
moins plus
Oui, sauf à la fin du contenu de l'image.
Pourtant le serveur transmet bien l'image, et le browser reçois très bien les pages web...
Je ne vois vraiment pas d'où peu venir le problème...

Merci quand même pour ta réponse mamiemando.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

Tu as sans doute déjà vérifié tout ça, mais comme ça ne se bouscule pas pour te répondre...

Les en-têtes sont bien séparées des données par une ligne vide (c'est à dire dire deux fois \r\n après "image/jpeg" ?
Je trouve étrange que ta page affiche le nom de ton image, alors que ce nom ne figure pas dans les données de l'image (en tous cas pas dans l'image sur laquelle j'ai fait une vérification). As-tu un moyen (logiciel de capture de paquets par exemple) pour vérifier ce qui sort réellement de ton serveur (le contenu de l'image et pas son nom ) ?
Ajouter un commentaire
Réponse
+0
moins plus
Ton header http doit être envoyé en ANSI avec des \r\n en fin de ligne. Peut être qu'il manque des champs dans ton header nécessaire pour le transfert d'une image, il faudrait que tu vérifies sur le site du w3c.

Vérifie également que la taille que tu mets dans le header correspond à la taille de la séquence binaire associée à ton image. L'idéal serait que tu installes un serveur apache avec cette image et que tu la récupères avec un navigateur et que tu compares les échanges entre ton navigateur et entre les deux types de serveur.

Pour cela, essaye d'installer wireshark pour voir ce qui circule. Capture le trafic sur ta carte réseau. Lance une capture et récupères l'image avec ton navigateur. Tu devrais voir apparaître des paquets http. Sélectionne en un et fais clic droit, "follow TCP stream". Tu devrais rapidement voir ce qui cloche ;-)

Bonne chance
Ajouter un commentaire
Réponse
+0
moins plus
@ "le père" : J'ai bien deux sauts de lignes entre le header et le contenu de mon image.
En fait, quand je dit qu'il n'y a que le nom de l'image qui apparait, je veux parler de l'adresse ou se trouve l'image ("http://192.168.0.4:10001/img.jpg"). Et pourtant j'ai bien vérifié ce qui sort du serveur en utilisant NetCat, cela ressemble bien aux données d'une image (bien que je ne sais pas comment vérifier s'il s'agit effectivement d'une image).

@ mamiemando : je viens d'installer WireShark, mais mon interface Wifi "wlan0" n'apparait pas dans les options de capture... Mais a priori il ne devrait pas y avoir d'erreur dans la taille de l'image puisque celle ci est "générée" sur la plateforme qui acceuille mon serveur, donc je connais sa taille exacte.

Edit: C'est bon j'ai trouvé le problème! Ça n'avait rien a voir avec les protocoles... En fait, lors de la compression de l'image, la plateforme en question rajoutait un header au début de l'image. En le supprimant, l'image est enfin apparue dans mon browser.

Merci pour votre aide!
Ajouter un commentaire
Réponse
+0
moins plus
Ok, merci pour le complément d'information et bonne continuation !
Ajouter un commentaire
Ce document intitulé « Requête HTTP GET » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?