2011-02-19 7 views
0

私は、ユーザー名が正しいかどうかを確認するためにtwitterにログインしようとするコードのセグメントを記述しようとしていますが、trueまたはfalseの場合に返します。私は正しいユーザー名を入れてまだサインインしているという事実のために働いていません。HTTPSログイン? Java

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(); 
} 
} 

だから、基本的に私はするつもりです何はタイトルが「ツイッター\ホーム」と言うと、それがないならば、私は私が正しくログイン知っているかどうかを確認するために試行ログインしてからスキャンページです。私はこれまでにそれを得ていませんが、私がそれを閲覧するとうまくいきません。

Btwブール値の返却を拒否するTwitter4jは使用したくありません。


私は正しいページにログインしようとしていない可能性があります。どうすればそれを見つけることができますか?それはTwitterのためには何でしょうか?

答えて

2

これを行うには、公式Twitter API(http://dev.twitter.com/doc)を使用してみましたか?

コードを見ると、ブラウザの認証リクエストが模倣されているように見えますが、ログインページでCookieやリクエストトークンなどの情報が欠落している可能性があります。

+0

私はそれを見ました。それはあなたがアプリケーションを登録し、Oauthを使用しなければならないと言いました。これはどのように行なわれるのかではなく、ブラウザのように振る舞いたい。私が見逃しているのは、私がブラウズするために戻るときのクッキーです。 – Zeveso