Https: авторизация 401 - PullRequest
       3

Https: авторизация 401

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

Я пытаюсь установить соединение с API, который защищен заголовками и токеном. Я установил код, в котором я сам не вижу никаких недостатков, и теперь я врезался в стену. То, что я не хочу делать, это получить некоторые данные JSON из URL, но я получаю это сообщение:

"Сервер вернул код ответа HTTP: 401 для URL: ..."

Код, который я показываю, был протестирован при извлечении JSON из небезопасного API, и он работал.

public static void main(String[] args) {

        String jsonText = "";

        try {                

                String token = "ttn-account-v2.---";

                URL url = new URL("https://---");

                HttpsURLConnection http = (HttpsURLConnection) url.openConnection();

                http.setRequestProperty("Authorization", "Bearer " + token);
                http.setRequestMethod("GET");
                http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                //http.setRequestProperty("Accept", "application/json");

                System.out.println("token: " + token);

                http.setUseCaches( true );
                http.setDoInput( true );
                http.setDoOutput( true );

                http.connect();

                InputStream im = http.getInputStream();
                StringBuilder sb = new StringBuilder();
                BufferedReader br = new BufferedReader(new InputStreamReader(im));
                FileOutputStream fo = new FileOutputStream("test.txt");
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fo));

                //Object obj = new JSONParser().parse(im);
                String line = br.readLine();

                while (line != null) {
                    sb.append(line + "\n");
                    System.out.println("line: " + line);
                    jsonText = sb.toString();

                    //System.out.println("json: " + jsonText);

                    bw.write(line);
                    bw.newLine();
                    line = br.readLine();

          }

        } catch (Exception e) {
            e.printStackTrace();

        }
    }

Код должен печатать данные JSON, но вместо этого я получаю http-ответ 401.

Трассировка стека:

java.io.IOException: сервер вернул код ответа HTTP: 401 для URL: https: // --- на sun.net.www.protocol.http.HttpURLConnection.getInputStream0 (HttpURLConnection.java:1894) на sun.net.www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:1492) на sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream (HttpsURLConnectionImpl.java:263)

1 Ответ

2 голосов
/ 08 апреля 2019

Это может быть длинный выстрел, но заменить

http.setRequestProperty("Authorization", "bearer" + token);

с

http.setRequestProperty("Authorization", "Bearer " + token);

И обратите внимание на пространство между "Несущим" и жетоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...