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

Langage PHP Discussion :

cURL, methodes GET ok mais méthode POST ne marchent pas


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut cURL, methodes GET ok mais méthode POST ne marchent pas
    Bonjour, je rencontre un problème et j'espère réussir à trouver de l'aide ici.

    Alors voilà, j'appelle une API pour en utiliser des foncitonnalités. Pour "récupérer" le code donc j'ai besoin je lance d'abord la fonctionnalité sur POSTMAN puis je récupère le code que j'arrange ensuite comme j'en ai besoin. Cela marche très bien pour les fonctions GET, je récupère tout ce qu'il faut mais pas pour les fonctions POST. J'obtiens une erreur me disant qu'il y a besoin d'un "body" pour utiliser la fonction. Cependant je pense remplis le POSTFIELD comme il faut donc je ne vois pas d'ou vient l'erreur...
    Voici mes codes, une en GET et une en POST ainsi que l'erreur obtenue:

    Voici la fonction en GET qui me renvoie bien les informations voulues
    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
    $token_file=fopen("headers.txt","r");
     
            $i=0;
            while($i<2)
            {
                $token=fgets($token_file);
                $i++;
            }
            fclose($token_file);
     
    $curl=curl_init();
     
            curl_setopt_array($curl,array(
                CURLOPT_URL=>"monURLGET",
                CURLOPT_RETURNTRANSFER=>true,
                CURLOPT_ENCODING=>"",
                CURLOPT_MAXREDIRS=>10,
                CURLOPT_TIMEOUT=>0,
                CURLOPT_FOLLOWLOCATION=>true,
                CURLOPT_HTTP_VERSION=>CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST=>"GET",
                CURLOPT_HTTPHEADER=>array(
                    $token),
            ));
     
     
            $parsee=json_decode(curl_exec($curl), true);
            curl_exec($curl);
            curl_close($curl);
    Voici la fonction en POST qui me renvoie une erreur
    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
     
    $token_file=fopen("headers.txt","r");
     
            $i=0;
            while($i<2)
            {
                $token=fgets($token_file);
                $i++;
            }
            fclose($token_file);
     
     $curl=curl_init();
     
                        curl_setopt_array($curl,array(
                            CURLOPT_URL=>"monURLPOST",
                            CURLOPT_RETURNTRANSFER=>true,
                            CURLOPT_ENCODING=>"",
                            CURLOPT_MAXREDIRS=>10,
                            CURLOPT_TIMEOUT=>0,
                            CURLOPT_FOLLOWLOCATION=>true,
                            CURLOPT_HTTP_VERSION=>CURL_HTTP_VERSION_1_1,
                            CURLOPT_CUSTOMREQUEST=>"POST",
                            CURLOPT_POSTFIELDS=>"{\n\"nom\":\"test\",\n\"origine\":\"test\"\n}", //c'est normal qu'il y ai les " et \, dans une version précédente de l'API je le faisais  //avec et cela marchait très bien
                            CURLOPT_HTTPHEADER=>array(
                                $token,
                                "Content-Type:application/json"
                            ),
                        ));
     
                        curl_exec($curl);
     
                        curl_close($curl);
    Voici l'erreur obtenue:

    {"timestamp":"2020-01-19T15:53:23.926+0000","status":400,"error":"Bad Request","message":"Required request body is missing: public org.springframework.http.ResponseEntity fr.nom.apiFNC.LibraryController.fonction(fr.nom.apiFNC.model.json.User)","path":"chemin"}
    Merci pour votre aide !

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Et comme ça, qu'est ce que ça donne?

    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // rien ne t'oblige à faire un truc moche avec des antislashes partout:
    // ne fabrique pas ton json à la main, laisse json_encode le faire pour toi.
    $postFields = json_encode([
        'nom' => 'test',
        'origine' => 'test'
    ]);
     
    // mets des espaces après les virgules, les :, avant et aprés les =>, c'est plus lisible
    curl_setopt_array($curl, [
        CURLOPT_URL => 'monURLPOST',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => $postFields,
        CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($postFields),
            'Authorization: ' . $token
        )
    ]);
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    ça fait la même erreur...

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Authorization:Bearer '.$token
    Lis ceci

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    Salut, j'ai essayé avec le Authorization (le Bearer est dans ma variable $token) et cela me met une erreur 401...

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Erreur 401, c'est bon : ton appel est bien formaté par contre c'est un problème au niveau du serveur API : généralement c'est les droits qui posent problème : jeton, id, clé...

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    je ne vois pas pourquoi les droits poseraient problème, j'ai le bon token, lorsque je l'utilise sur postman ça marche bien...

  8. #8
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Et si c'était le saut de ligne récupéré avec fgets qui posait problème?
    Essaie ça:'Authorization: ' . rtrim($token, "\r\n")
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    J'essaye

  10. #10
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Et alors? Ça n'empêche pas ta deuxième ligne de se terminer par un saut de ligne. (comme toutes les autres sauf peut-être la dernière du fichier)
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    ouiiiiiiii c'était ça merci beaucoooouuuuup !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [cURL] Upload fichier avec la méthode POST
    Par pduplouy dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/05/2009, 18h08
  2. [cURL] Envoyer des données avec la methode GET
    Par hicham285 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 21/11/2007, 16h46
  3. methode GET et POST
    Par Hisander dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/10/2007, 16h53
  4. Méthodes GET / POST
    Par KeKeMaN dans le forum Langage
    Réponses: 8
    Dernier message: 17/05/2006, 12h08

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