public String[] getLinksOnPage(String title) throws IOException
    {
    	StringBuilder url = new StringBuilder(query);
        url.append("prop=links&pllimit=max&titles=");
        url.append(URLEncoder.encode(normalize(title), "UTF-8"));
        String plcontinue = "";
        ArrayList<String> links = new ArrayList<String>(750);
        do
        {
            if (!plcontinue.isEmpty())
            {
                url.append("&plcontinue=");
                url.append(plcontinue);
            }

            String line = fetch(url.toString(), "getLinksOnPage");

            // strip continuation
            if (line.contains("plcontinue"))
            {
                int x = line.indexOf("plcontinue=\"") + 12;
                int y = line.indexOf('\"', x);
                plcontinue = URLEncoder.encode(line.substring(x, y), "UTF-8");
            }
            else
                plcontinue = "";

            // parse the list
            // typical form: <pl ns="6" title="page name" />
            for (int a = line.indexOf("title=\""); a >= 0; a = line.indexOf("title=\"", a))
            {
                int b = line.indexOf("\" ", a); // important space!
                links.add(decode(line.substring(a + 7, b)));
                a = b;
            }
        }
        while (!plcontinue.isEmpty());
        links.remove(0); // remove the first one, as that is an artifact of the parsing process
    	log(Level.INFO, "Successfully retrieved links used on " + title + " (" + links.size() + " links)", "getLinksOnPage");
    	return links.toArray(new String[0]);
    }