使用Expedia API和curl获取XML数据的问题

问题描述:

当我直接在浏览器中加载下面在curl函数中使用的URL时,我得到了XML格式的正确数据。使用Expedia API和curl获取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正在运行,因此您可以自己测试它。

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

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

在你的情况(Q = 1为默认值) :

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