Получение 401 (неавторизованного) при использовании Java для получения информации Riot API

Я экспериментирую с Riot Games API. Я точно знаю, что мой URL-адрес в порядке, мой ключ API, который я должен включить, также подходит; нет причины, по которой мой запрос должен возвращать 401. Сначала я подумал, что это связано с Eclipse, но размещение API в моем браузере также возвращает 401 (в формате JSON, который обычно возвращает API). Я знаю, что для этого есть форумы, но я подумал, что, может быть, кто-то здесь может указать на ошибку в моей программе:

public class APITry {
    public static void main(String[] args) throws IOException{

        URL LOLAPI = new URL("https://prod.api.pvp.net/api/lol/na/v1.1/summoner/by-name/RiotSchmick&api_key=<key>"); //<key> is, of course, replaced with my key
        BufferedReader in = new BufferedReader(new InputStreamReader(LOLAPI.openStream()));
        StringBuilder build = new StringBuilder();

        String inputLine;
        while ((inputLine = in.readLine()) != null)
            build.append(in.toString());
        in.close();

        String INFO = build.toString();

        JSONParser prse = new JSONParser();

        try {
            Object obj = prse.parse(in);
            JSONObject PARSED = (JSONObject) obj;
            String message = (String) PARSED.get("message");
            int summonerID = (int) PARSED.get("losses");
            System.out.println("message:" + message);
            System.out.println("retrieved, is " + summonerID);
        } catch (ParseException e) {
            e.printStackTrace();
            System.out.println("parse exception");
        } catch(NullPointerException e) {
            e.printStackTrace();
        } catch(FileNotFoundException e) {
            e.printStackTrace();
        }

    }

Мой импорт все учтены.

1 ответ

Решение

Я посмотрел на URL, с которым вы вызываете API. Я не уверен, что вы сделали опечатку при размещении здесь:

https://prod.api.pvp.net/api/lol/na/v1.1/summoner/by-name/RiotSchmick&api_key=<key>

Вам нужно пройти в api_key в качестве параметра, так вместо &, использовать ? перед api_key то есть как следующее:

https://prod.api.pvp.net/api/lol/na/v1.1/summoner/by-name/RiotSchmick?api_key=<key>

Если вышеописанное не соответствует действительности, и вы на самом деле правильно передаете ключ и по-прежнему получаете {"status": {"message": "Access denied", "status_code": 401}} ответьте, тогда ключ скорее всего недействителен.

Другие вопросы по тегам