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

 C Discussion :

Requête http curl => socket


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Par défaut Requête http curl => socket
    Bonjour,

    J'aimerais traduire une commande curl en requête http utilisable avec des sockets.
    Si j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -H “Content-Type: application/json” http://www.url.com/setup -X POST -d ‘params:un_param’
    Alors en HTTP ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POST /setup HTTP/1.1\r\nHost: www.url.com\r\nContent-Type: application/json\r\nContent-Length: 15\r\n\r\nparams=un_param
    Mais si j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -H “Content-Type: application/json” http://www.url.com/setup -X POST -d '{"params":"un_param"}'
    ?

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    je ne comprends pas trop ton problème.
    Tu montres que tu as compris le principe, qu'est-ce qui te coinces pour mettre ton JSON en data ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Par défaut
    Ben sur le 2e, il y a des accolades et je ne vois pas comment les mettres dans la requêtes
    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POST /setup HTTP/1.1\r\nHost: www.url.com\r\nContent-Type: application/json\r\nContent-Length: 15\r\n\r\n{\"params\"=\"un_param\"}
    mais ca ne marche pas

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Peut-être parce qu'avec les accolades et les quotes tu dépasses les 15 octets que tu déclares dans le Content-Length ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Par défaut
    En changeant la taille, c'est pareille. Il me met 404 Not Found

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Tu es sûr de la taille (et t'as bien pensé à mettre ':' au lieu de '=', tu t'es raté dans ta retranscription ici) ?
    Le server te renvoie des info supplémentaires dans la réponse (après les entêtes) ?

    Ce qui est étonnant c'est qu'une 404 c'est normalement la resource qui n'est pas trouvée (/setup dans ton cas),
    si la requête était juste moisie tu devrais plutôt obtenir un retour 400 (bad request).

  7. #7
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Par défaut
    Oui, autant pour moi, c'est bien un 404 Bad Request que j'ai.
    Voilà ma requête extact que j'envoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POST /setup HTTP/1.1\r\nHost: www.url.com\r\nContent-Type: application/json\r\nContent-Length: 25\r\n\r\n{\"params\":\"un_params\"}
    Et voilà ce qu'il me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HTTP/1.1 400 Bad Request
    Access-Control-Allow-Headers:Content-Type
    Cache-Control:no-cache
    Content-Length:0
     
    "un_params"}
    Pourtant avec curl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -H “Content-Type: application/json” http://www.url.com/setup -d ‘{“params”:”un_params”}’ -X POST
    ça marche sans soucis.

  8. #8
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Quand je compte à la main je tombe sur une taille de 22 (tu as dû compter les caractères d'échappement).
    Pour le retour, y'a rien après les entêtes (cf. Content-length:0), ce qu'on voit doit être un reliquat dans ton buffer.

    Est-ce que la réponse mais son temps à arriver ?
    Vu que tu dis au server qu'il y a plus de char que ce que tu envoies il est possible qu'il sorte en timeout.

  9. #9
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Par défaut
    La réponse du serveur est immédiate. ET ca fait la même chose avec un length de 22.
    Décidément !
    C'est quand même bizarre que ca marche avec la commande curl, mais pas avec ma requête :o

  10. #10
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    J'ai eu ce genre de soucis (ne pas comprendre d'où vient le souci ) pour des requêtes un peu suantes.
    Le truc que j'ai fait c'est la comparaison entre une requête OK et ma requête KO. Ça consiste à :
    - lancer la commande qui fonctionne (pour toi curl) et sniffer la requête avec Wireshark,
    - lancer l'appli qui ne fonctionne pas (ton code) et sniffer la requête avec Wireshark,
    - jouer au jeu de 8 différences ^^

    Je parle de Wireshark car c'est le sniffer de paquet que j'utilise, mais tu prends le logiciel de ton choix

Discussions similaires

  1. requêtes http en pur raw socket TCP et UDP
    Par pam76 dans le forum Réseau
    Réponses: 2
    Dernier message: 27/10/2011, 13h13
  2. Problème d'envoi de deux requêtes HTTP 1.1 dans un même socket
    Par sousal dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 18/08/2011, 09h43
  3. [cURL] Requête HTTP sans corps réponse juste les entêtes
    Par ksven dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 19/03/2009, 21h54
  4. Requête HTTP - POST avec socket
    Par kalylive dans le forum Réseau
    Réponses: 3
    Dernier message: 28/04/2008, 14h10
  5. Sockets et requêtes HTTP
    Par Kunai dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 20/03/2007, 08h32

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