使用Expedia API和curl获取XML数据时出现问题

时间:2011-07-15 05:24:55

标签: php xml curl

当我在浏览器中直接加载curl函数中使用的URL时,我会以XML格式获得正确的数据。

但是当我通过curl调用它时,有时我会获得JSON格式的数据,有时甚至根本没有数据。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://api.ean.com/ean-services/rs/hotel/v3/list?minorRev=4&cid=55505&apiKey=5q4gzx43g6ukcrq798z2hz75&customerSessionId=&locale=en_US&currencyCode=USD&xml=<HotelListRequest><city>new%20delhi</city><RoomGroup><Room><numberOfAdults>2</numberOfAdults><numberOfResults></numberOfResults></Room></RoomGroup></HotelListRequest>");
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$retValue = curl_exec($ch);                     
curl_close($ch);

echo $retValue;

以上API正在运行,您可以自行测试。

1 个答案:

答案 0 :(得分:2)

您需要通过设置Accept标头字段在HTTP请求中明确指定XML内容类型,以便REST服务器知道您想要什么,例如:

Accept: text/xml,application/xml;q=1

在您的情况下(q = 1是默认值):

curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept: text/xml,application/xml'));