2012-02-08 5 views
0

ウェブページから.icsファイルを取得したいが、そこにログインする必要がある。 私は次のコードでログインすることができるよ:ログインする必要があるウェブページをダウンロード

DefaultHttpClient httpclient = new DefaultHttpClient(); 

    HttpGet httpget = new HttpGet("http://ipool.ba-berlin.de/stundenplaene.anzeige.php?faculty=15&course=6&type=html"); 

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

    System.out.println("Login form get: " + response.getStatusLine()); 
    if (entity != null) { 
     entity.consumeContent();    
    } 
    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()); 
     } 
    } 

    HttpPost httpost = new HttpPost("http://ipool.ba-berlin.de/main.php?action=login"); 

    List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 
    nvps.add(new BasicNameValuePair("FORM_LOGIN_NAME", "MY_USERNAME")); 
    nvps.add(new BasicNameValuePair("FORM_LOGIN_PASS", "MY_PASSWORD")); 

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

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

    System.out.println("Login form get: " + response.getStatusLine()); 
    if (entity != null) { 
     entity.consumeContent(); 
    } 

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

    httpclient.getConnectionManager().shutdown(); 

しかし、私のログイン後、私は私のファイルの内容を取得する方法がわかりません。どうすればそれを可能にすることができますか?

ありがとうございます!

答えて

0

ログイン後にご質問がある場合は、セッションCookieを使用してリソース(ファイルURL)をリクエストする必要があります。

は今、あなたがURLに新しいHTTPリクエストを行う必要があり、私はあなたのコードでそれを見る にはログインがすでに管理しているので、あなたが応答でセッションクッキーを受け取っているはずです。この

CookieStore cookieStore = new BasicCookieStore(); 
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", mySessionId); 

cookieStore.addCookie(cookie); 
client.setCookieStore(cookieStore); 

のようなものを試してみてくださいあなたはファイルがありますが、サーバー側ではすでにログインしていることを検証する必要があるため、JSESSIONIDという名前のCookieとして受信したIDに基づいてセッションオブジェクトにデータが格納されているため、この例では新しいCookieが作成され、受信したCookieを直接渡すことができます

+0

ありがとうございました;) –

+0

問題ありません.... –