Envoyer une requête HTTP avec les identifiants demandés en JSON

WRInaute passionné
Salut à tous,

Je souhaite télécharger un fichier csv à l'aide d'une url qu'un de mes fournisseur m'a fourni, il me donne aussi des Api Key : ma api_key=11111111 et ma api_secret=2222222.

Je souhaiterai télécharger ce fichier via une page écrite en php, j'ai donc pensé à utiliser curl, voici mon code :

PHP:
// PATH de téléchargement du fichier en local
$path_fichier = "".$_SERVER['DOCUMENT_ROOT']."/temp/";
// URL de téléchargement du fichier de mon fournisseur
$feed_url = "https://site-de-mon-fournisseur.com/api/downloadfile";
// Fichier stockage données
$newfile_2 = "".$path_fichier."liste_produits.zip";
if(file_exists($newfile_2)){unlink($newfile_2);}
$fp = fopen($newfile_2,"a+");
// Création requête http Get
$request = curl_init($feed_url); // initiate curl object
curl_setopt($request, CURLOPT_FILE, $fp); //Ask cURL to write the contents to a file
curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response
curl_setopt($request, CURLOPT_TIMEOUT, 1800); //set timeout to 15 mins
curl_exec($request); // execute curl post
curl_close($request); // close curl object
fclose($fp);
// Décompresser fichier zip
$zip = new ZipArchive;
$openned = $zip->open($newfile_2);
if($openned === TRUE){
  $zip->extractTo($path_fichier);
  $zip->close();
}
Mon problème c'est que je ne sais pas quoi faire avec ma api_key et ma api_secret qu'ils m'ont donné afin que je puisse m'authentifier lors de la requête http. Comment faut-il faire pour s'authentifier via ces Api Key ?

D'avance merci pour vos réponses.
 
WRInaute accro
Ca dépend du type d'authentification, des fois c'est les clefs en GET/POST, du OAuth2 ou JWT. Tout ça doit être documenté auprès de ton fournisseur.

Dans le doute je tenterais d'abord en GET :
PHP:
$feed_url = "https://site-de-mon-fournisseur.com/api/downloadfile?" . http_build_query(['api_key' => 11111111, 'api_secret' => 2222222]);
 
WRInaute passionné
Ca dépend du type d'authentification, des fois c'est les clefs en GET/POST, du OAuth2 ou JWT. Tout ça doit être documenté auprès de ton fournisseur.

Dans le doute je tenterais d'abord en GET :
PHP:
$feed_url = "https://site-de-mon-fournisseur.com/api/downloadfile?" . http_build_query(['api_key' => 11111111, 'api_secret' => 2222222]);
Merci Spout, le type d'authentification est en POST, comment faire dans ce cas là ?
 
WRInaute passionné
Merci Spout, je me suis inspiré d'un code trouvé dans ton lien (réponse ligne 342) mais ça ne marche pas, voici mon code, vois-tu des erreurs ?
PHP:
// PATH de téléchargement du fichier en local
$path_fichier = "".$_SERVER['DOCUMENT_ROOT']."/temp/";

// URL de téléchargement du fichier de mon fournisseur
$feed_url = "https://site-de-mon-fournisseur.com/api/downloadfile";

// API Key
$API_Key = "11111111";
$Secret_Key = "22222222";
$post_API_Key = [
    'api_key' => $API_Key,
    'api_secret' => $Secret_Key,  
];

// Fichier stockage données
$newfile_2 = "".$path_fichier."liste_produits.zip";
if(file_exists($newfile_2)){unlink($newfile_2);}
$fp = fopen($newfile_2,"a+");

// Création requête http POST
$request = curl_init($feed_url); // initiate curl object
curl_setopt($request, CURLOPT_FILE, $fp); //Ask cURL to write the contents to a file
curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response
curl_setopt($request, CURLOPT_TIMEOUT, 1800); //set timeout to 15 mins
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $post_API_Key);
curl_exec($request); // execute curl post
curl_close($request); // close curl object
fclose($fp);

// Décompresser fichier zip
$zip = new ZipArchive;
$openned = $zip->open($newfile_2);
if($openned === TRUE){
  $zip->extractTo($path_fichier);
  $zip->close();
}
 
Dernière édition:
WRInaute passionné
Merci spout.

Je t'ai envoyé un message privé (Conversations) avec un lien vers cette API et la documentation adéquate, est-ce que ça t'es utile pour voir quel code php il faudrait pour pouvoir télécharger ce fichier ?
 
Discussions similaires
Haut