Bonjour,

J'ai utilisé cURL avec la méthode GET pour envoyer un fichier de configuration sous forme de fichier XML vers ma gateway de VoIP avec le code suivant:

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
<?php
// Url cible
$url="http://192.168.15.1/admin/resync?http//192.168.15.200/config.xml&xuser=admin&xpassword=admin";
// Le tableau associatif contenant les variables envoyées par POST au serveur
$options=array(
      CURLOPT_URL            => $url, // Url cible
      CURLOPT_RETURNTRANSFER => true, // Retourner le contenu téléchargé dans une chaine
      CURLOPT_HEADER         => false, // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
      CURLOPT_FAILONERROR    => true // Gestion des codes d'erreur HTTP supérieurs ou égaux à 400
);
// Création d'un nouvelle ressource cURL
$CURL=curl_init();
// Erreur suffisante pour justifier un die()
if(empty($CURL)){die("ERREUR curl_init : Il semble que cURL ne soit pas disponible.")}
      // Configuration des options de téléchargement
      curl_setopt_array($CURL,$options);
      // Exécution de la requête
      $content=curl_exec($CURL); // Le contenu téléchargé est enregistré dans la variable $content
      // Si il s'est produit une erreur lors du téléchargement
      if(curl_errno($CURL)){
            // Le message d'erreur correspondant est affiché
            echo "ERREUR curl_exec : ".curl_error($CURL);
      }
// Fermeture de la session cURL
curl_close($CURL);
?>
192.168.15.1 -> @ip de la gateway
192.168.15.200 -> @ip de mon serveur web

Le script fonctionne bien, mais je voudrai utiliser cURL avec la méthode POST en ajoutant les deux options "CURLOPT_POST" et "CURLOPT_POSTFIELDS " avec le code suivant:

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
<?php
// Url cible
$url="http://192.168.15.1/admin/resync?http//192.168.15.200/config.xml";
// Complétez le tableau associatif $postFields avec les variables qui seront envoyées par POST au serveur
$postFields=array(
      "xuser"     => "admin",  // La variable xuser contenant la valeur admin
      "xpassword" => "admin"  // La variable xpassword contenant la valeur admin
);
// Le tableau associatif contenant les variables envoyées par POST au serveur
$options=array(
      CURLOPT_URL            => $url, // Url cible
      CURLOPT_RETURNTRANSFER => true, // Retourner le contenu téléchargé dans une chaine
      CURLOPT_HEADER         => false, // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
      CURLOPT_FAILONERROR    => true, // Gestion des codes d'erreur HTTP supérieurs ou égaux à 400
      CURLOPT_POST           => true, // Effectuer une requête de type POST
      CURLOPT_POSTFIELDS     => $postFields // Le tableau associatif contenant les variables envoyées par POST au serveur
);
// Création d'un nouvelle ressource cURL
$CURL=curl_init();
// Erreur suffisante pour justifier un die()
if(empty($CURL)){die("ERREUR curl_init : Il semble que cURL ne soit pas disponible.")}
      // Configuration des options de téléchargement
      curl_setopt_array($CURL,$options);
      // Exécution de la requête
      $content=curl_exec($CURL); // Le contenu téléchargé est enregistré dans la variable $content
      // Si il s'est produit une erreur lors du téléchargement
      if(curl_errno($CURL)){
            // Le message d'erreur correspondant est affiché
            echo "ERREUR curl_exec : ".curl_error($CURL);
      }
// Fermeture de la session cURL
curl_close($CURL);
?>
Mais cela ne marche pas.

Merci.