mixuhd Posted March 2, 2014 Posted March 2, 2014 (edited) import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URLEncoder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class PriceFetcher { public static double getAvgPrice(String q) { HttpURLConnection connection = null; BufferedReader rd = null; StringBuilder sb = null; String line = null; URL serverAddress = null; try { serverAddress = new URL("http://forums.zybez.net/runescape-2007-prices/api/item/" + URLEncoder.encode(q, "UTF-8")); connection = null; connection = (HttpURLConnection)serverAddress.openConnection(); connection.setRequestMethod("GET"); connection.setDoOutput(true); connection.setReadTimeout(10000); connection.setRequestProperty("User-Agent", "Bot"); connection.connect(); rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); sb = new StringBuilder(); while ((line = rd.readLine()) != null) { sb.append(line + '\n'); } JsonParser parser = new JsonParser(); JsonObject obj = parser.parse(sb.toString()).getAsJsonObject(); if (obj.has("average")) { return obj.get("average").getAsDouble(); } else if (obj.has("error")) { System.out.println(obj.get("error").toString()); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { connection.disconnect(); rd = null; sb = null; connection = null; } return Double.NaN; } public static void main(String[] args) { System.out.println(getAvgPrice("0")); // => NaN System.out.println(getAvgPrice("Lobster")); // => 226.689 System.out.println(getAvgPrice("3+@@#$@.---")); // => NaN System.out.println(getAvgPrice("Blue partyhat")); // => 48370.227 } } Requires google-gson in your build path for parsing the JSON response! Edited March 2, 2014 by mixuhd 3
Freak Posted March 2, 2014 Posted March 2, 2014 Impressive, now I'm not a java programmer, but why this part: public static void main(String[] args) { System.out.println(getAvgPrice("0")); // => NaN System.out.println(getAvgPrice("Lobster")); // => 226.689 System.out.println(getAvgPrice("3+@@#$@.---")); // => NaN System.out.println(getAvgPrice("Blue partyhat")); // => 48370.227
Jack Posted March 2, 2014 Posted March 2, 2014 Impressive, now I'm not a java programmer, but why this part: public static void main(String[] args) { System.out.println(getAvgPrice("0")); // => NaN System.out.println(getAvgPrice("Lobster")); // => 226.689 System.out.println(getAvgPrice("3+@@#$@.---")); // => NaN System.out.println(getAvgPrice("Blue partyhat")); // => 48370.227 This is how you test it...
Merccy Posted April 20, 2014 Posted April 20, 2014 (edited) This deserves to be used more . Ty mixu. Edited April 20, 2014 by Merccy
lazyy Posted April 22, 2014 Posted April 22, 2014 Very nice but is it possible to grab every item in an area with the value of above 200 and list them ??