java.io.FileNotFoundException при использовании Yahoo API

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

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

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-адресе указано 2001.

Что не так с моим кодом и как мне это исправить? Заранее спасибо.

1 ответ

Решение

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

GregorianCalendar start = new GregorianCalendar(2000, 11, 12);
GregorianCalendar end = new GregorianCalendar(2013, 11, 2);
Другие вопросы по тегам