Проблема извлечения данных XML с использованием Expedia API и curl - PullRequest
1 голос
/ 15 июля 2011

Когда я загружаю URL, используемый ниже в функции 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 работает, поэтому вы можете проверить его самостоятельно.

1 Ответ

2 голосов
/ 17 июля 2011

Вам необходимо явно указать тип содержимого XML в своем HTTP-запросе, установив поле заголовка Accept, чтобы REST-сервер знал, что вы хотите, например:

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

В вашемрегистр (q = 1 является значением по умолчанию):

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