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!