2017-02-10 38 views
0

即時通訊工作的一些應用程序,它必須從雅虎財經休息api獲取數據。例如,對於符號「GOOG」我已經寫這樣的代碼來獲得表Angular2如何獲得json表單雅虎Finace rest api

export class ActService{ 

act = []; 
    url = 'http://query.yahooapis.com/v1/public/yql?format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=&q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol=%22goog%22'; 
    private headers = new Headers({'Content-Type': 'application/json'}); 

    constructor(private http : Http){ 
    this.getAct(); 
    } 

    getAct() { 
    console.log("update"); 

    return Observable 
     .interval(1000) 
     .flatMap(() => { 
     return this.http.get(this.url) 
      .map(res => res.json()); 
     }); 
    } 
} 

代碼的應用程序組件使用actService:

export class AppComponent implements OnInit{ 

    act =[]; 

    ngOnInit(){ 

    this.actService 
     .getAct() 
     .subscribe(
     act => this.act = act, 
     err => console.error(err) 
    ); 

    } 

    constructor(private actService: ActService){} 
} 

該工作有時不錯,但通常這是拋出一個錯誤。

"No definition found for Table yahoo.finance.quotes" 

的問題是我,而我開始我的應用程序reciving這個錯誤,並在隨機的時刻。特殊情況經常出現在:任何時間的任何時刻,即00秒。 15:34:59我得到了很好的結果,但在15:35:00我有錯誤。 enter image description here 如何解決?這是我的錯?我的服務中沒有看到任何不好的東西,而我的「得到」。

我讀了關於這個錯誤的堆棧中的最後一個問題,但是我沒有找到類似的解決方案。

+0

@ValLeNain從那裏:err => console.error(err) –

回答

0

我也發現這個問題,並修復它與雅虎開發人員網站上的YQL控制檯更新我的YQL查詢。

你可以在這裏嘗試你的雅虎yql控制檯上的查詢https://developer.yahoo.com/yql/console/(不要忘記檢查「顯示社區表」選項)。例如是這樣的:

https://developer.yahoo.com/yql/console/?q=select%20from%20yahoo.finance.quotes%20where%20symbol%20英寸20%(%22AAPL%22)& ENV =商店://datatables.org/alltableswithkeys#h=select+ + from + yahoo.finance.quotes +其中+符號+ +(%22AAPL%22)

根據您的查詢,YQL控制檯會爲您提供REST查詢,您可以在您的應用程序中使用。複製它以替換您當前的查詢。

+0

是的,我從這裏得到這個休息,但它仍然不時扔404 - 你測試了什麼頻率的問休息是最好的? –

+0

沒有。你有沒有嘗試在YQL控制檯上再次運行它?因爲我從舊查詢中得到了不同的結果,新的休息查詢運行良好。 –

+0

是的,我測試了這個 –