Я наткнулся на код, который работает, но мне трудно понять, как он работает. Поскольку почтовый запрос отправляется в паре ключ-значение, но, как вы увидите в этом коде, CURLOPT_POSTFIELDS напрямую назначается для данных XML. В каком "ключе" он отправляется на хост ??
Используется ли какой-либо ключ по умолчанию, если для значения не указан ключ?
Спасибо, ниже приведен полный код.
$xml_file = '<?xml version="1.0" encoding="UTF-8"?>
<AvailRateUpdateRQ xmlns="http://www.expediaconnect.com/EQC/AR/2007/02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Authentication username="username" password="ECLPASS"/>
<Hotel id="111"/>
<DateRange from="2012-09-22" to="2012-09-26"/>
<RoomType id="222">
<RatePlan id="333">
<Rate currency="USD">
<PerDay rate="100.00"/>
</Rate>
</RatePlan>
</RoomType>
</AvailRateUpdateRQ>
';
$host = 'host: expediaquickconnect.com';
$accept = 'Accept: application/xml';
$connection = 'Connection: Keep-Alive';
$useragent = 'User-Agent: Mozila/4.0(compatible; MSIE 7.0; Windows NT 5.1; NET CLR 1.0.3705;.NETCLR 1.1.4322; InfoPath.1;.NETCLR 2.0.50727;.NETCLR 3.0.04506.30)';
$acceptlanguage = 'Accept-Language: en-us';
$acceptencoding = 'Accept-Encoding: gzip, deflate';
$contenttype = 'Content-Type: application/xml';
$header = array( $host, $accept, $useragent, $acceptlanguage, $acceptencoding, $contenttype );
$session = curl_init( );
curl_setopt($session, CURLOPT_URL, $post_url );
curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($session, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($session, CURLOPT_HTTPHEADER, $header);
curl_setopt($session, CURLOPT_HEADER, FALSE);
curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_POSTFIELDS, $xml_file); // how ??
curl_setopt($session, CURLOPT_HTTPGET, FALSE);
curl_setopt($session, CURLOPT_COOKIESESSION, FALSE);
$response = curl_exec ($session);
curl_close ($session);