Как правильно оформить https запрос на аутентификацию для Github api?

При помощи curl это можно осуществить следующей командой: curl -u username https://api.github.com/user.
Написанный ниже вызывает FileNotFoundException в строчке с объявлением InputStream т.к. сервер возвращает 401 (Unauthorized).

public static void makeAuthRequest(URL url) throws IOException {
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        try {
            connection.setRequestProperty("Authorization", "Basic " +
                    Base64.encode("мой_ник:мой_пароль".getBytes(), Base64.NO_WRAP));

            InputStream content = connection.getInputStream();
            BufferedReader in = new BufferedReader(new InputStreamReader(content));

            String line;
            StringBuilder sb = new StringBuilder("");
            while ((line = in.readLine()) != null) {
                sb.append(line + '\n');
            }
            System.out.println(sb.toString());

        } catch (IOException ioex) {
            ioex.printStackTrace();
        } finally {
            connection.disconnect();
        }
    }
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
nikitae57
@nikitae57 Автор вопроса
Вот работающий вариант:

public static void makeAuthRequest(URL url) throws IOException {

        HttpsURLConnection uc = (HttpsURLConnection) url.openConnection();
        uc.setRequestProperty("X-Requested-With", "Curl");

        String userpass = "login" + ":" + "password";
        String basicAuth = "Basic " + String.valueOf(Base64.encode(userpass.getBytes(), Base64.DEFAULT));
        uc.setRequestProperty("Authorization", basicAuth);

        InputStreamReader inputStreamReader = new InputStreamReader(uc.getInputStream());
        Scanner sc = new Scanner(inputStreamReader);
        sc.useDelimiter("\\A");

        if (sc.hasNext()) {
            String str = sc.next();
            Log.d("TAG", str);
        }
        uc.disconnect();
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы