Как отправить ключ авторизации с моим HTTP-запросом на получение?

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

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

Вот API: https://developer.clashroyale.com/#/начало работы

        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();

                }

            }

        }

Я почти уверен, что это чувствительно к регистру. Используйте: "авторизация: Bearer <токен API>". По существу строчная буква «а» и добавить Bearer.

Dylan 09.04.2019 20:42

Если ваш ключ JWT, попробуйте использовать conn.setRequestProperty("Authorization", "Bearer " + key);

ChocolateAndCheese 09.04.2019 20:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
191
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

curl -X GET --header 'Accept: application/json' --header "authorization: Bearer (token)" 'https://api.clashroyale.com/v1/locations?limit=5'

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

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

  conn.setRequestProperty("Authorization", key); 

Для:

  conn.setRequestProperty("authorization", "Bearer " + key); 

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