2015-12-04 2 views
0

Я пытался получить список исторических данных запаса APPL, но не смог этого сделать.java.io.FileNotFoundException при использовании Yahoo API

Моя функция, как показано ниже:

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 

ли уведомление о том, что ошибка в URL-адресе отличается от моих параметров. Я запросил данные с 2000 года, но в обратном URL-адресе, указанном в нем.

Что случилось с моим кодом и как его исправить? Заранее спасибо.

+0

Вы получили неправильный год, потому что месяцы в GregorianCalendar конструктору являются 0 на основе, так чтобы получить 12 декабря 2000 года, вы должны пройти новый GregorianCalendar (2000, 11, 12) – Nyavro

ответ

0

Все хорошо ... кроме того месяца, который начинается с 0, поэтому, чтобы начать с использования 11 декабря не 12.

GregorianCalendar start = new GregorianCalendar(2000, 11, 12); 
GregorianCalendar end = new GregorianCalendar(2013, 11, 2); 
Смежные вопросы