【发布时间】:2017-03-13 11:49:58
【问题描述】:
我尝试使用 curl 在 php 中调用 expedia xml webservice。但是如何使用 post 发送 XML 数据
样品请求
<BookingConfirmRQ xmlns="http://www.expediaconnect.com/EQC/BC/2007/09">
<Authentication username="mytestusername" password="mypwd"/>
<Hotel id="7224658"/>
<BookingConfirmNumbers>
<BookingConfirmNumber bookingID="252743459" bookingType="Book" confirmNumber="E2340589B" confirmTime="2013-12-30T23:45:00Z"/>
</BookingConfirmNumbers>
</BookingConfirmRQ>
回复
<BookingConfirmRS xmlns="http://www.expediaconnect.com/EQC/BC/2007/08">
<Success/> OR FAIL
</BookingConfirmRS>
我的代码部分
$curl = curl_init();
$url ="https://services.expediapartnercentral.com/eqc/bc";
$data = array();//What will be data here and which formate
switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "MYusername:MYpassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
我对这里的 POST DATA 是什么以及哪种格式感到困惑? 使用 CURL 是正确的方法还是我必须在这里使用 SoapClient() ? 请分享您的想法和解决方案。谢谢
【问题讨论】:
-
API 开发人员文档肯定应该详细说明您需要发送的内容,不是吗?
-
您需要创建 XML 正文并发送它。
标签: php xml web-services curl