Отправка данных XML с использованием HTTP POST с PHP - PullRequest
21 голосов
/ 02 ноября 2009

Мне нужно отправить этот 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>

к услуге SMS-шлюза. Служба прослушивает HTTP-запросы POST. XML должен быть встроен в тело запроса POST.

Я использую PHP и платформу CodeIgniter, но я полный PHP n00b, поэтому в идеале мне понадобится подробное руководство, но любые указатели в правильном направлении приветствуются.

Ответы [ 2 ]

32 голосов
/ 02 ноября 2009

вы можете использовать библиотеку cURL для публикации данных: 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);

где postfield содержит XML, который вам нужно отправить - вам нужно будет указать имя поля, которое ожидает API-сервис (я думаю, Clickatell)

23 голосов
/ 02 ноября 2009

Другой вариант будет 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...