@SeniorDmitry

Как пройти авторизацию?

Нужно получить содержимое страницы, но перед получением страницы нужно ввести логин и пароль, не могу понять как это сделать при помощи Java, научите, подскажите пожалуйста.
На гугле заблокировали :(

public class qu {
    public static void main(String args[]) throws IOException {
        String line;
        String result = "";

        URL link = new URL("URL");
        HttpURLConnection conn = (HttpURLConnection) link.openConnection();

        conn.setRequestMethod("GET");


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

        while ((line = rd.readLine()) != null) {
            result += line;
        }

        conn.disconnect();

        System.out.println(result);
    }
}
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
z17
@z17
Java, PHP
В общем случае - смотрите что из себя представляет форма входа, обычно это POST запрос куда-нибудь с логином и паролём.
Делаете в коде такой же запрос, сохраняете ответ (заголовки, куки). Далее при получении содержимого нужной страницы подставляете в запрос эти заголовки и куки.

Короче говоря своими запросами нужно сымитировать реального пользователя.
Ответ написан
@ivanessence
Android Developer
Вот примерный кусок кода для авторизации, если например нужно ещё кроме ввода логина и пароля, нажать на кнопку, то попробовать добавить ещё один параметр appendQueryParameter, который можно посмотреть через F12 на сайте куда уходит post, параметры кнопки

URL url = new URL(URL_LOGIN_TEST);
            Log.i("connSuccess", "1");
//            CookieHandler.setDefault(manager);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            Log.i("connSuccess", "2");
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            Log.i("connSuccess", "3");
//            conn.setRequestProperty("Cookie",
//                    TextUtils.join(";", manager.getCookieStore().getCookies()));
//            Log.i("COOKIE", manager.getCookieStore().getCookies().toString());
            Log.i("connSuccess", "4");
            Uri.Builder builder = new Uri.Builder()
                    .appendQueryParameter("password", password).appendQueryParameter("email", login);
            String query = builder.build().getEncodedQuery();

            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(query);
            writer.flush();
            writer.close();
            os.close();
            conn.connect();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы