如何在php中调用expedia xml webservice

时间:2016-10-31 11:40:25

标签: php xml web-services curl

我尝试使用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数据是什么以及哪种格式? 使用CURL是正确的方法还是我必须在这里使用SoapClient()? 请分享您的想法和解决方案。感谢

1 个答案:

答案 0 :(得分:0)

你的问题只是。 $ data应该是什么,不是吗?

你必须知道这个普通的html表格。在这种情况下,我使用登录表单

<form method=POST> 
<input type=text name=user value=admin>
<input type=password name=pass value=SECRET>
<input type=submit name=login value=sigin>
</form>

我们可以使用curl来完成你的curl脚本。 和$数据将是:

$method='POST';
$data = array(
  'user'=> 'admin',
  'pass'=>'SECRET',
  'login'=>'sigin'
);