Отправка XML-данных с использованием HTTP POST с PHP
Мне нужно отправить этот 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 должен быть встроен в BODY запроса POST.
Я использую PHP и структуру CodeIgniter, но я полный PHP n00b, поэтому в идеале мне понадобится тщательное руководство, но любые указатели в правильном направлении будут оценены.
Ответы
Ответ 1
вы можете использовать библиотеку 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, который вам нужно отправить - вам нужно будет указать postfield, что служба API (Clickatell, я думаю) ожидает
Ответ 2
Другим вариантом будет 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);