[英]HTTPS login? Java
我正在嘗試編寫一段代碼,嘗試登錄到twitter以檢查用戶名是否正確,然后返回true(如果為true或false)。 它沒有用,因為如果我輸入正確的用戶名並通過,我仍然會登錄頁面。
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,因為它拒絕返回布爾值。
也可能是我沒有正確的頁面嘗試登錄。 我怎么找到它? 什么是推特?
你有沒有看過使用官方Twitter API(http://dev.twitter.com/doc)來做這件事?
查看您的代碼表明您正在模仿瀏覽器的身份驗證請求,但這可能會遺漏一些信息,例如Cookie,請求令牌以及他們在登錄頁面中可能使用的任何其他信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.