Thanks @LoudPacks,@Explv and @Cyberus.
Usage:
//Grabbing level
getSkill("Acc_name", SKILL_ID).getLevel();
//Grabbing EXP
getSkill("Acc_name", SKILL_ID).getXp();
Highscore.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
public final class Highscores {
public static String username;
private Highscores() {
}
private static final String BASE_URL = "http://services.runescape.com/m=hiscore_oldschool/index_lite.ws?player=";
private static final int SKILL_COUNT = 24;
private static final int ACTIVITY_COUNT = 3;
public static Skill[] getSkills(final String playerName) {
Skill[] skills = new Skill[SKILL_COUNT];
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(new StringBuffer(BASE_URL).append(URLEncoder.encode(playerName.replace((char)160, ' '), "UTF-8")).toString()).openStream()))) {
for (int skill = 0; skill < SKILL_COUNT; skill++) {
String[] skillEncodedSplit = reader.readLine().split(",");
skills[skill] = new Skill(Integer.parseInt(skillEncodedSplit[0]), Integer.parseInt(skillEncodedSplit[1]), Integer.parseInt(skillEncodedSplit[2]));
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return skills;
}
public static Skill getSkill(final String playerName, int skillId) {
return getSkills(playerName)[skillId];
}
public static Activity[] getActivities(final String playerName) {
try {
final Activity[] activities = new Activity[ACTIVITY_COUNT];
try (final BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(new StringBuffer(BASE_URL).append(playerName).toString()).openStream()))) {
for (int skill = 0; skill < SKILL_COUNT; skill++) {
reader.readLine();
}
for (int activity = 0; activity < ACTIVITY_COUNT; activity++) {
final String[] activityEncodedSplit = reader.readLine().split(",");
activities[activity] = new Activity(Integer.parseInt(activityEncodedSplit[0]), Integer.parseInt(activityEncodedSplit[1]));
}
}
return activities;
} catch (final IOException e) {
throw new IllegalArgumentException("Username not valid");
}
}
public static Activity getActivity(final String playerName, int activityId) {
return getActivities(playerName)[activityId];
}
public static class Skill {
private final int rank;
private final int level;
private final int xp;
private Skill(final int rank, final int level, final int xp) {
this.rank = rank;
this.level = level;
this.xp = xp;
}
public int getRank() {
return rank;
}
public int getLevel() {
return level;
}
public int getXp() {
return xp;
}
}
public static class Activity {
private final int rank;
private final int score;
private Activity(final int rank, final int score) {
this.rank = rank;
this.score = score;
}
public int getRank() {
return rank;
}
public int getScore() {
return score;
}
}
}