web-dev-qa-db-fra.com

Envoyer une demande de publication XML à un serveur Web avec CURL

J'essaie d'envoyer une demande à un serveur Web en utilisant php et curl. Je n'ai jamais fait quelque chose comme ça auparavant et bien qu'il existe de nombreux exemples Nice en ligne, j'ai quelques difficultés à comprendre certaines des commandes curl.

Voici ce que je veux faire: il existe un service Web établi (par exemple: service de carte Web) et je veux que mon code php envoie une demande de publication XML à ce service. En réponse, je veux obtenir un fichier XML.

Voici ce que j'ai jusqu'à maintenant:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, ''); 
    /*curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));*/
    /* curl_setopt($ch, CURLOPT_HEADER, 0);*/
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    /*curl_setopt($ch, CURLOPT_REFERER, '');*/
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $ch_result = curl_exec($ch);
    curl_close($ch);
    echo $ch_result;

Comme je l'ai dit, je suis assez nouveau en php et aussi en utilisant curl et je pense que je manque certains concepts. Mes questions sont: 1) Quelle est la chaîne (lien) que je dois mettre dans:

          curl_setopt($ch, CURLOPT_URL, ''); 

Est-ce le nom d'hôte du service auquel je souhaite envoyer la demande?

2) Dans la ligne 6, la variable $ xml contient le fichier xml que je veux envoyer comme demande. Est-ce correct ou cette variable est censée contenir autre chose?

3) Dans quels cas dois-je utiliser un httpheader ou un en-tête (row3 et row4);

Merci pour l'aide. Dimitris

17
user1919

Essayez-le de cette façon:

  $url = 'https://Android.googleapis.com/gcm/send';
  $ch = curl_init();
  curl_setopt( $ch, CURLOPT_URL, $url );
  curl_setopt( $ch, CURLOPT_POST, true );
  curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt( $ch, CURLOPT_POSTFIELDS, "<xml>here</xml>" );
  $result = curl_exec($ch);
  curl_close($ch);

Pour plus de détails, visitez: http://php.net/manual/en/function.curl-setopt.php

32
PKeidel