更新:現在問題已解決。問題是由於我大學的代理服務器造成的。由於他們,我無法從雅虎API獲取數據到我的本地主機。但是當我上傳服務器上的網站時,一切正常。fopen()不工作,並且目標機器的警告正在積極拒絕它?
我想從雅虎財經API獲取股票價格,但是當我輸入股票代碼並出現下面的警告時。請看看這段代碼,並指出我的錯誤。謝謝!
警告頁面的圖像是Here
我的代碼是
$symbol=$_POST['symbol'];
$url="http://download.finance.yahoo.com/d/quotes.csv?s=".trim($symbol)."&f=nsl1op&e=.csv";
$handle=fopen($url, "r");
if (!$handle) {
$error = 'Not a valid URL.';
return false;
}
$result=array();
while ($row = fgetcsv($handle)){
if (isset($row[1])) {
array_push($result, array('company'=>$handle[0],'symbol'=>$handle[1],'last_trade'=>$handle[2], 'open'=>$handle['3'],'close'=>$handle['4']));
}
}
fclose($handle);
$quote_data=$result;
if(!$quote_data){
echo "<div class='alert alert-danger'>invaild symbol</div>";
render("master",array('title'=>'FSE', 'view'=>'quote')); //will show the form again to enter symbol
exit();
}
$title='Quotes for'.htmlspecialchars($quote_data['symbol']);
render("master",array('view'=>'quote', 'title'=>$title, 'data'=>$quote_data)); //will show the page showing prices & symbols of company
這意味着在'download.finance.yahoo.com'不接受您的客戶端連接的目標URL。你是否能夠在_same_機器上成功地在瀏覽器中打開相同的'$ url'?一些主機拒絕某些用戶代理字符串的連接,但允許其他用戶代理字符串,或者這可能會阻止你進入。 – 2014-10-04 20:34:56
對於它的價值,我可以從瀏覽器打開該URL,也可以使用'file_get_contents()'從PHP調用它。 – 2014-10-04 20:36:19
是的,當我把「http://download.finance.yahoo.com/d/quotes.csv?s=goog&f=nsl1op&e=.csv"{lets假設$符號= goog},那麼我可以下載CSV文件其中包含谷歌的數據。 – 2014-10-04 20:38:46