Envoyer des données XML en utilisant HTTP POST avec PHP

je dois envoyer ce XML

      <?xml version="1.0" encoding="UTF-8"?>
<gate>
   <country>NO</country>
   <accessNumber>1900</accessNumber>
   <senderNumber>1900</senderNumber>
   <targetNumber>4792267523</targetNumber>
   <price>0</price>
   <sms>
      <content><![CDATA[This is a test æøå ÆØÅ]]></content>
   </sms>
</gate>

à un service de passerelle SMS. Le service écoute les requêtes HTTP POST. Le XML doit être intégré dans le corps de la requête POST.

J'utilise PHP et le cadre CodeIgniter, mais je suis un total PHP n00b, donc idéalement j'aurais besoin d'un guide complet, mais tout pointeur dans la bonne direction serait apprécié.

19
demandé sur Muhammad Wasim Shahzad 2009-11-02 15:19:46

2 réponses

Vous pouvez utiliser la bibliothèque cURL pour poster des données: http://www.php.net/curl

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL, "http://websiteURL");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "XML=".$xmlcontent."&password=".$password."&etc=etc");
$content=curl_exec($ch);

où postfield contient XML que vous devez envoyer - vous aurez besoin de nommer le postfield le service API (Clickatell je suppose) attend

31
répondu dusoft 2009-11-02 12:21:23

une Autre option serait file_get_contents():

// $xml_str = your xml
// $url = target url

$post_data = array('xml' => $xml_str);
$stream_options = array(
    'http' => array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded' . "\r\n",
        'content' =>  http_build_query($post_data)));

$context  = stream_context_create($stream_options);
$response = file_get_contents($url, null, $context);
22
répondu GZipp 2009-11-02 16:06:24