2014-10-04 73 views
0

更新:現在問題已解決。問題是由於我大學的代理服務器造成的。由於他們,我無法從雅虎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 
+0

這意味着在'download.finance.yahoo.com'不接受您的客戶端連接的目標URL。你是否能夠在_same_機器上成功地在瀏覽器中打開相同的'$ url'?一些主機拒絕某些用戶代理字符串的連接,但允許其他用戶代理字符串,或者這可能會阻止你進入。 – 2014-10-04 20:34:56

+0

對於它的價值,我可以從瀏覽器打開該URL,也可以使用'file_get_contents()'從PHP調用它。 – 2014-10-04 20:36:19

+0

是的,當我把「http://download.finance.yahoo.com/d/quotes.csv?s=goog&f=nsl1op&e=.csv"{lets假設$符號= goog},那麼我可以下載CSV文件其中包含谷歌的數據。 – 2014-10-04 20:38:46

回答

0


已編碼的,你不應該編碼的特殊字符它

http://download.finance.yahoo.com/d/quotes.csv?s=goog&amp;&f=nsl1op&e=.csv 

的使用char &在URL中分隔參數不應該用HTML編碼 - > & amp;

讓我知道如果是幫你

+0

仍然存在相同的問題 – 2014-10-04 22:07:54

+0

是否可以停用計算機中的所有防火牆並重試?它可能是這個問題的根源 – 2014-10-04 22:12:45

+0

我禁用了防火牆,但仍然存在相同的問題 – 2014-10-04 23:07:42

相關問題