2012-01-16 3 views
0

Suppore私はここでログインしたい:http://www.vodafone.it/190/trilogy/jsp/home.doを、私はコードを使用します。のHttpClientライブラリログイン

HttpGet httpget = new HttpGet("http://www.vodafone.it/190/trilogy/jsp/home.do"); 

    HttpResponse response = httpclient.execute(httpget); 
    HttpEntity entity = response.getEntity(); 

    System.out.println("Initial set of cookies:"); 
    List<Cookie> cookies = httpclient.getCookieStore().getCookies(); 
    if (cookies.isEmpty()) { 
     System.out.println("None"); 
    } else { 
     for (int i = 0; i < cookies.size(); i++) { 
      System.out.println("- " + cookies.get(i).toString()); 
     } 
    } 
    //Visito la pagina del Login 
    HttpPost httpost = new HttpPost("https://www.vodafone.it/190/trilogy/jsp/login.do"); 

    List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 
    nvps.add(new BasicNameValuePair("username", "")); 
    nvps.add(new BasicNameValuePair("password", "")); 

    httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 

    response = httpclient.execute(httpost); 
    entity = response.getEntity(); 

    System.out.println("Post logon cookies:"); 
    cookies = httpclient.getCookieStore().getCookies(); 
    if (cookies.isEmpty()) { 
     System.out.println("None"); 
    } else { 
     for (int i = 0; i < cookies.size(); i++) { 
      System.out.println("- " + cookies.get(i).toString()); 
     } 
    } 

それが正しいなら、私がログインしていた場合、どのように私が知っていることができますか?

+0

は、私はHTTPClientのの専門家でありませんが、あなたはあなたがログインまたはケース2では – RanRag

答えて

1

これはいくつかの方法があります。 (それらのどれもが標準装備されていません。あなたに当てはまるものを確認してください。)

  1. 一般的に成功したログイン後、ウェブサイトredirectいくつかのホームページにユーザー。ログインが失敗した場合、ログインページに戻ってもこのリダイレクトは起こりません。したがって、返されるHTTPステータスコードが303または307の場合は、ログインが成功したとみなすことができます。これはブラウザのアドオン(FirefoxのFireBugなど)を使って確認できます。

  2. 上記の場合が真でない場合(リダイレクトがないことを意味します)、直接ホームページに表示されます。その場合、ページの基本的な内容を確認することができます(ページ全体の内容を一般的に示しています)。ページヘッダーは、あなたがあなたのホームページにいることを確認するための一方法です。

+0

ログインしていません。一度にリダイレクトされているページのURLを取得することができ、あなたはまた、ログアウトボタンの存在を探すことができます/リンクとは対照的に、 – Viruzzo