References before one goes into stuff:
- https://developer.yahoo.com/java/howto-parseRestJava.html#parsejson
- https://developer.yahoo.com/yql/
- https://developer.yahoo.com/yql/console/
Here is the code:
/** * */ package com.kant.yahooFinanceQuoteReader; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * @author shashi * */ public class YahooFinanceQuoteClient { private static final String QUOTE = "quote"; private static final String RESULTS = "results"; private static final String QUERY = "query"; private final String[] values = { "symbol", "Ask", "AverageDailyVolume", "PercentChange", "StockExchange", "DaysRange" }; /** * @param args */ public static void main(String[] args) { YahooFinanceQuoteClient yahooClient = new YahooFinanceQuoteClient(); Listarguments = new ArrayList<>(); arguments.add("YHOO"); arguments.add("AAPL"); arguments.add("GOOG"); arguments.add("MSFT"); yahooClient.checkYahooFinanceForQuotes(arguments); //Above or this /*for (String item : arguments) { yahooClient.checkYahooFinanceForQuote(item); }*/ } /** * */ public void checkYahooFinanceForQuote(String symbol) { try { String urlString = "http://query.yahooapis.com/v1/public/yql?"/* "http://finance.yahoo.com/rss/headline?" */; String params = "q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22" + symbol + "%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback="; URL url = new URL(urlString + params); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); StringBuffer buffer = getResponseFromWS(conn); System.out.println("[Response]:"); System.out.println(buffer); readJsonObject(buffer); conn.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * * @param args */ public void checkYahooFinanceForQuotes(List args) { try { String urlString = "http://query.yahooapis.com/v1/public/yql?"; String header = "q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20("; String tail = ")&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback="; Iterator iterator = args.iterator(); String subPart = "%22"; while (iterator.hasNext()) { if (!subPart.equals("%22")) subPart = subPart + "%2C%22"; String subStr = iterator.next(); subPart = subPart + subStr + "%22"; } // System.out.println(header + subPart + tail); URL url = new URL(urlString + header + subPart + tail); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); StringBuffer buffer = getResponseFromWS(conn); System.out.println("[Response]:"); System.out.println(buffer); readJsonObject(buffer); conn.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private StringBuffer getResponseFromWS(HttpURLConnection conn) throws IOException { conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "application/text"); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream()))); String output = null; StringBuffer buffer = new StringBuffer(); while ((output = br.readLine()) != null) { buffer.append(output); } return buffer; } /** * * @param buffer */ private void readJsonObject(StringBuffer buffer) { try { JSONObject jo = new JSONObject(buffer.toString()); jo = jo.getJSONObject(QUERY); jo = jo.getJSONObject(RESULTS); if (jo.optJSONObject(QUOTE) == null) { JSONArray ja = jo.getJSONArray(QUOTE); for (int i = 0; i < ja.length(); i++) { JSONObject resultObject = ja.getJSONObject(i); printJsonObject(resultObject); } } else { JSONObject resultObject = jo.getJSONObject(QUOTE); printJsonObject(resultObject); } } catch (JSONException e) { e.printStackTrace(); } } /** * * @param resultObject * @throws JSONException */ private void printJsonObject(JSONObject resultObject) throws JSONException { System.out.println("--"); for (String value : values) System.out.println(value + ": " + resultObject.get(value)); System.out.println("--"); } }
Comments
Post a Comment