HTTPS логин? Джава - PullRequest
       7

HTTPS логин? Джава

0 голосов
/ 19 февраля 2011

Я пытаюсь написать сегмент кода, который попытается войти в твиттер, чтобы проверить, правильно ли указано имя пользователя, а затем вернуть, если оно истинно или неверно.Это не работает из-за того, что если я введу правильное имя пользователя и передам это, я все равно получу страницу входа.

public class httpConnect {
//Variables

public Boolean correctCredentials(String site, String user, String pass) {
    String data = connect(site, user, pass);
    char[] charArray = data.toCharArray();
    try {
        File log = new File("C:\\Users\\________\\Desktop" + "\\" + "log.txt");
        if (log.exists()) {
            Scanner scan = new Scanner(log);
            while (scan.hasNextLine()) {
                String temp = scan.nextLine();
                temp = charArray.toString() + (char) 10 + (char) 10 + (char) 10 + temp;
                charArray = temp.toCharArray();
            }
        }
        BufferedWriter out = new BufferedWriter(new FileWriter("C:\\Users\\________\\Desktop" + "\\" + "log.txt", true));  //bufferedWriter for speed
        out.append((char) 10);
        for (int x = 0; x < charArray.length; x++) {
            out.append(charArray[x]);
        }
        out.flush();
        out.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e + "\nSorry, could not write File"); //gives error if path does not exist
    }
    return false;
}

public String connect(String site, String user, String pass) {
    StringBuilder response = new StringBuilder();
    ;
    try {
        String encodedUser = URLEncoder.encode(user, "UTF-8");
        String encodedPass = URLEncoder.encode(pass, "UTF-8");
        /*
         * commit - LOGIN_ACTION_NAME
         * session[username_or_email] - LOGIN_USER_NAME_PARAMETER_NAME
         * session[password] - LOGIN_PASSWORD_PARAMETER_NAME
         */
        String content = "login=" + "commit" + " amp;amp;"
                + "session[username_or_email]" + "=" + encodedUser + "amp;amp;"
                + "session[password]" + "=" + encodedPass;
        HttpsURLConnection urlConnect = (HttpsURLConnection) (new URL(site).openConnection());
        urlConnect.setDoInput(true);
        urlConnect.setDoOutput(true);
        urlConnect.setRequestProperty("Content-Type", "text/html; charset=utf-8");
        urlConnect.setRequestMethod("POST");
        DataOutputStream dataOutputStream = new DataOutputStream(urlConnect.getOutputStream());
        dataOutputStream.writeBytes(content);
        dataOutputStream.flush();
        dataOutputStream.close();
        BufferedReader buf = new BufferedReader(new InputStreamReader(urlConnect.getInputStream()));
        String responseLine = "";
        while ((responseLine = buf.readLine()) != null) {
            response.append(responseLine);
        }
        System.out.println(response);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return response.toString();
}
}

Итак, в основном я собираюсь попытаться войти в систему, а затемотсканируйте страницу, чтобы увидеть, если в заголовке написано "Twitter \ Home", и если это так, то я знаю, что вошел в систему правильно.Я не дошел до этого, но когда я сам просматриваю его, он не работает.

Кстати, я не хочу использовать Twitter4j, потому что он отказывается возвращать логическое значение.


Также возможно, что у меня нет нужной страницы для попытки входа в систему.Как бы я нашел это?Что бы это было за твиттер?

1 Ответ

2 голосов
/ 19 февраля 2011

Рассматривали ли вы использование официального API Twitter (http://dev.twitter.com/doc) для этого?

Просмотр вашего кода показывает, что вы имитируете запросы аутентификации браузера, но при этом, вероятно, пропускается некоторая информация, такая как файлы cookie, маркеры запросов и все остальное, что они могут использовать на своей странице входа в систему.

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