Как отправить ключ авторизации с моим HTTP-запросом получения? - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь отправить HTTP-запрос к REST API, который требует и ключ авторизации. Мой код работает для REST API, которые не требуют авторизации, но с этим я получаю только ошибку 403. Мне нужна помощь

.setRequestProperty («Авторизация», ключ) не работает. Я пытался отправить свой ключ с "Bearer" +, но все равно ничего.

Вот API: https://developer.clashroyale.com/#/getting-started

        import java.io.BufferedReader;
        import java.io.IOException;
        import java.io.InputStreamReader;
        import java.net.HttpURLConnection;
        import java.net.MalformedURLException;
        import java.net.URL;

        public class Json {

            public static void main(String[] args) {

                try {

                    String key;
                    URL url = new URL("https://api.clashroyale.com/v1/players/%23PPCY9Y2J/upcomingchests");
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setRequestMethod("GET");
                    conn.setRequestProperty("Accept", "application/json");
                    conn.setRequestProperty("Content-Type", "application/json");
                    conn.setRequestProperty("Authorization", key); 
                    if (conn.getResponseCode() != 200) {
                        throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
                    }

                    BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

                    String output;
                    System.out.println("Output from Server .... \n");
                    while ((output = br.readLine()) != null) {
                        System.out.println(output);
                    }

                    conn.disconnect();

                } catch (MalformedURLException e) {

                    e.printStackTrace();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

        }

1 Ответ

0 голосов
/ 09 апреля 2019

Когда вы переходите к документации в https://developer.clashroyale.com/#/documentation и выбираете «попробовать» запрос, он показывает пример запроса с использованием curl. Например:

curl -X GET --header 'Accept: application / json' --header " авторизация: Носитель (токен) " 'https://api.clashroyale.com/v1/locations?limit=5'

Там вы можете видеть, что «Авторизация» строчная и что вам нужен «Носитель» перед вашим ключом.

Поэтому измените эту строку:

  conn.setRequestProperty("Authorization", key); 

Для:

  conn.setRequestProperty("authorization", "Bearer " + key); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...