IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Requête HTTP - POST avec socket


Sujet :

Réseau C

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Requête HTTP - POST avec socket
    Salut a tous,

    Je suis en train de travailler sur un programme qui doit recuperer un fichier audio present sur un serveur Web. Pour cela, j'ai un fichier Php qui recupere une requete POST et envoie le code du fichier donne en parametre.

    Voici le code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    	$cmd    = $_POST['cmd'];
     	$user   = $_POST['user']; 
    	$passwd = $_POST['passwd']; 
     
    	$version_soft = $_POST['version_soft'];	
    	$id_audio = $_POST['id_audio'];
     
            // Perment d'envoye le code du fichier
    	readfile($id_audio);
     
    	exit;
     
    ?>
    De l'autre cote, j'ai realise un programme en C qui envoie une requete de type POST au serveur et qui recupere la reponse qui est l'entete HTTP plus les donnees du fichier audio ki est envoyé.

    Je recupere bien l'entete et les données du fichier audio que je sauvegarde dans un fichier. Le pb vient du fait que les fichiers de depart et d'arrive sont different, il y a quelques octets (tres peu) qui ont ete ajoute lors de l'envoi et je ne sais pas du tout pourquoi.

    Voici le code C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    char *servername = "127.0.0.1";
    char *filepath = "/media.php";
    char *param = "cmd=2&user=user&passwd=passwd&version_soft=version_soft&id_audio=file.wav";
     
    int len = strlen(param);
    sprintf(msg,"POST %s HTTP/1.1\r\nHost:<a href="http://www.lalala.com\r\nContent-type:" target="_blank">www.lalala.com\r\nContent-type:</a>application/x-www-form-urlencoded\r\nContent-length:  %d\r\n\r\n%s\r\n\r\n",filepath,len,param);
     
     
    send(conn,msg,strlen(msg),0);
     
    // We have to open with the binary mode
    fp = fopen("./file.wav","wb");
     
    // Pour lire l'entete en premier	
    int type = 0;
    while((type != 4) && (y = recv(conn,header,1,0))) {
    		if (type == 0 && header[0] == '\r')
    			type = 1;
    		else if (type == 1 && header[0] == '\n')
    			type = 2;
    		else if (type == 2 && header[0] == '\r')
    			type = 3;
    		else if (type == 3 && header[0] == '\n')
    			type = 4;
    		else
    			type = 0;
    	}
     
    // Et apres on recupere les octets du fichier envoye et on les sauve
     
    	while(y=recv(conn,buff,sizeof(buff),0))
    	{
    		fwrite(buff,y,1,fp);
    	}
     
    	fclose(fp);
    	closesocket(conn);
    	WSACleanup();
    Et donc a la fin de l'execution, je recois bien le 99 % du fichier mais des bytes se sont inseres et je ne sais pas d'ou il provienne.
    Si quelqu'un pouvait me renseigner et m'aider ??

    Merci d'avance
    Bonne nuit

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kalylive Voir le message
    Et donc a la fin de l'execution, je recois bien le 99 % du fichier mais des bytes se sont inseres et je ne sais pas d'ou il provienne.
    Si quelqu'un pouvait me renseigner et m'aider ??
    Tu es sûr que ta façon de repérer l'entête (4 caractères dans un ordre donné mais non consécutif), suffit à identifier la fin de l'entête sans ambigüité ? As-tu fait un dump de l'entête pour vérifier ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Si quand je regarde avec un éditeur hexadecimal le fichier crée, l'entete est bien supprimé et le fichier commence bien la oui il doit commencer. Mais apres, des caractères sont ajoutes et je ne sais pas pourquoi.

    Salut ...

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kalylive Voir le message
    Mais apres, des caractères sont ajoutes et je ne sais pas pourquoi.
    Ajoutés au début, à la fin, n'importe où, c'est régulier, erratique ? On est pas aidé...

    Tu as testé avec un navigateur ?

    Le serveur est public ? url, adresse ?

    On peut tester à distance ?

Discussions similaires

  1. Requête HTTP POST sur Twitter avec OAuth
    Par e-zaz dans le forum Services Web
    Réponses: 2
    Dernier message: 23/10/2014, 14h23
  2. Réponses: 1
    Dernier message: 28/05/2012, 15h37
  3. Transmission des objets avec une requête HTTP POST
    Par handsome01 dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2009, 17h07
  4. [LINUX] Simuler une requête HTTP POST ou GET
    Par Anified dans le forum Linux
    Réponses: 1
    Dernier message: 05/02/2007, 17h11
  5. Comment effectuer une requête http post ?
    Par Turtle_fr dans le forum 4D
    Réponses: 10
    Dernier message: 07/09/2006, 02h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo