2015-12-04 50 views
0

我試圖獲取APPL的歷史股票數據列表,但無法這樣做。使用雅虎API時的java.io.FileNotFoundException

我的功能如下:

public void StockDownloader(String symbol, GregorianCalendar start, GregorianCalendar end ){ 

     dates = new ArrayList<GregorianCalendar>(); 
     opens = new ArrayList<Double>(); 
     highs = new ArrayList<Double>(); 
     lows = new ArrayList<Double>(); 
     closes = new ArrayList<Double>(); 
     volume = new ArrayList<Integer>(); 
     adjcloses = new ArrayList<Double>(); 

     String url = "http://real-chart.finance.yahoo.com/table.csv?s="+symbol+ 
       "&a="+start.get(Calendar.MONTH) + 
       "&b="+start.get(Calendar.DAY_OF_MONTH) + 
       "&c="+start.get(Calendar.YEAR) + 
       "&d="+end.get(Calendar.MONTH) + 
       "&e="+end.get(Calendar.DAY_OF_MONTH) + 
       "&f="+end.get(Calendar.YEAR) + 
       "&g=d&ignore=.csv"; 

     try{ 
      URL yahoofinance = new URL(url); 
      URLConnection data = yahoofinance.openConnection(); 
      Scanner input = new Scanner(data.getInputStream()); 
      if(input.hasNext()){ 
       input.nextLine(); 
      } 
      while(input.hasNextLine()){ 
       String line = input.nextLine(); 
       System.out.println(line); 
      } 
     }catch(Exception e){ 
      System.err.println(e); 

     } 

這是我如何調用該函數:

GregorianCalendar start = new GregorianCalendar(2000, 12, 12); 
     GregorianCalendar end = new GregorianCalendar(2013, 12, 2); 
     StockDownloader("APPL",start,end); 

我得到的錯誤是:

java.io.FileNotFoundException: http://real-chart.finance.yahoo.com/table.csv?s=APPL&a=0&b=12&c=2001&d=0&e=2&f=2014&g=d&ignore=.csv 

做公告稱,網址中的錯誤與我的參數不同。我已經請求2000年的數據,但在2001年的返回URL中。

我的代碼出了什麼問題,我該如何解決這個問題?提前致謝。

+0

你錯了一年開始,所以要得到2000年12月12日你應該通過新的GregorianCalendar(2000,11,12) – Nyavro

回答

0

一切都很好......除了從0開始的月份,因爲在GregorianCalendar的構造函數的月份是基於0,因此從十二月使用11不12

GregorianCalendar start = new GregorianCalendar(2000, 11, 12); 
GregorianCalendar end = new GregorianCalendar(2013, 11, 2);