2015-12-04 39 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);