2016-05-31 2 views
1

Попытка получить некоторые данные из RSS-ленты Yahoo Finance, но при использовании curl я получаю пустой ответ. Кто-нибудь знает, почему?PHP CURL Yahoo Finance Returning Blank

function getContents($thisURL) { 
$strURL = "$thisURL"; 
$resURL = curl_init(); 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_ENCODING,'gzip'); 
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, $strURL); 
$data = curl_exec($ch); 
curl_close($ch); 
return $data; 
} 


$feed = getContents("http://feeds.finance.yahoo.com/rss/2.0/headline?s=AAPL&region=US&lang=en-US"); 

Если я использую регулярное file_get_contents не работает без проблем, таких как:

file_get_contents("http://feeds.finance.yahoo.com/rss/2.0/headline?s=AAPL&region=US&lang=en-US"); 

Я не хочу использовать file_get_contents

+0

Используйте ** curl_error ** увидеть ошибку. – user2182349

ответ

3

вашей curl функции содержит несколько ошибок, это работает (проверено) :

<?php 
function getContents($thisURL) { 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt($ch, CURLOPT_URL, $thisURL); 
$data = curl_exec($ch); 
curl_close($ch); 
return $data; 
} 

echo getContents("http://feeds.finance.yahoo.com/rss/2.0/headline?s=AAPL&region=US&lang=en-US"); 
?> 

Все, что я удалил от вас, было неправильным или ненужным. Я добавил curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);


Вы можете прочитать больше о curl function on php.net

+0

Ресурс загружается отлично в браузере, но при использовании вашего метода возникает ошибка 301. * Редактировать: * Отладка локальных настроек env – andrewgu

+0

Я протестировал код, и он отлично работает, не знаю, что может быть неправильно на вашей стороне. –

+0

Ну, мне нравится трафик gzip + иногда наблюдается значительное увеличение скорости с использованием v4, но, кроме того, это прекрасно, большое вам спасибо. Будет принимать, когда он позволяет мне в 1 минуту. –