Envoyer une requête XML post à un serveur web avec CURL

j'essaie d'envoyer une requête à un serveur web en utilisant php et curl. Je n'ai jamais fait quelque chose comme ça avant et bien qu'il y ait beaucoup d'exemples sympas en ligne j'ai quelques difficultés à comprendre certaines des commandes curl.

C'est ce que je veux faire: il y a un service web établi (par exemple: Web map service) et je veux que mon code php envoie une demande POST XML à ce service. Comme réponse, je veux obtenir un fichier XML.

C'est 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 quelques concepts. Mes questions sont les: 1) qu'est-Ce que la chaîne (lien) que je dois mettre dans la:

          curl_setopt($ch, CURLOPT_URL, ''); 

est-ce le nom d'hôte du service que je veux envoyer la demande?

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

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

Merci pour votre aide. Dimitris

15
demandé sur user1919 2013-03-28 14:12:32

2 réponses

Essayez 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

28
répondu PKeidel 2013-03-28 10:25:40

je pense qu'utiliser les classes HTTP peut être mieux adapté pour faire des requêtes HTTP.

voir http://www.php.net/manual/intro.http.php