Laravel France

API en POST avec CURL

  • Avatar de Djayze
    Membre depuis :
    07/12/2019
    Messages :
    6

    Bonjour,

    je cherche des précisions concernant l'utilisation des API en POST.
    Que doit contenir par défaut le "CURLOPT_HTTPHEADER", y a t-il des champs obligatoires?

    Concernant le CURLOPT_POSTFIELDS, les données qu'on lui passe en paramètres doivent-elle être encodées en JSON avant?
    exemple :
    $data_string = json_encode($data);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

    est-ce la bonne façon de faire?

    Merci de vos retours.

    David

  • Avatar de bArraxasArraxas
    Membre depuis :
    05/12/2019
    Messages :
    3

    Cela dépend des exigences de ton api.
    Voici un exemple perso quand j'ai du joindre une api sécurisée par token :

    <?php
    try {
    $ch = curl_init();
    curl_setopt ( $ch, CURLOPT_URL, "http://api.blabla.be/api/cron" );
    curl_setopt ( $ch, CURLOPT_HTTPHEADER, [ "Authenticate: Bearer eyJhbGOiJIUzI1NiIsInR5cCI6IkCJ9.eyJ1aWQiOjF9.iEJ5awPTtiXU8BwAH8vb6MrfkQv9EQDKFth3Ylyx_uV0" ] );
    curl_setopt ( $ch, CURLOPT_POST, false );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    $log = curl_exec($ch);
    echo $log;
    curl_close($ch);
    }
    catch (Exception $e) {
    echo 'exception_curl : ' . $e->getMessage() . ' | ';
    }
    ?>

    Là c'était juste un appel simple sans passage de paramètre mais au moins tu un début de réponse à la question de savoir quoi mettre dans le champ "CURLOPT_HTTPHEADER"

  • Avatar de Djayze
    Membre depuis :
    07/12/2019
    Messages :
    6

    Bonjour à tous,

    Merci bArraxasArraxas d'avoir pris le temps de me répondre.

    Après avoir recherché sur le net, j'ai trouvé.
    Pour mon code il se détaille ainsi pour ceux que ça pourrait aider:

    $data = array(
    'title' => $request->titre,
    'description' => $request->description,
    );

    $curl = curl_init();

    curl_setopt_array($curl, array(
    CURLOPT_URL => "https://monapi.com/api/v2/tickets",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => http_build_query($data),
    CURLOPT_HTTPHEADER => array(
    "userApiKey: unCodeAPIsecretPerso"
    ),
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
    echo "cURL Error #:" . $err;
    } else {
    echo $response;
    }

    c'est le "http_build_query" CURLOPT_POSTFIELDS qui permet de formater correctement les données que j'envoie.

Vous ne pouvez pas répondre à ce sujet.