OSDN Git Service

ニコニコ動画Webアクセスを別クラスに委譲.
[coroid/NicoBrowser.git] / src / nicobrowser / NicoHttpClient.java
1 /*$Id$*/
2 package nicobrowser;
3
4 import java.io.IOException;
5 import java.util.logging.Level;
6 import java.util.logging.Logger;
7 import org.apache.commons.httpclient.HttpClient;
8 import org.apache.commons.httpclient.cookie.CookiePolicy;
9 import org.apache.commons.httpclient.methods.PostMethod;
10
11 /**
12  *
13  * @author yuki
14  */
15 public class NicoHttpClient extends HttpClient {
16
17     static NicoHttpClient instance;
18     private static final String LOGIN_PAGE =
19             "https://secure.nicovideo.jp/secure/login?site=niconico";
20
21     private NicoHttpClient() {
22         super();
23         instance = this;
24     }
25
26     public static NicoHttpClient getInstance() {
27         if (instance == null) {
28             return new NicoHttpClient();
29         }
30         return instance;
31     }
32
33     /**
34      * ニコニコ動画へログインする.
35      * @param mail ログイン識別子(登録メールアドレス).
36      * @param password パスワード.
37      * @return 認証がOKであればtrue.
38      */
39     public boolean login(String mail, String password) {
40         boolean auth = false;
41         PostMethod post = new PostMethod(LOGIN_PAGE);
42
43         try {
44             post.addParameter("mail", mail);
45             post.addParameter("password", password);
46             post.addParameter("next_url", "");
47             post.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
48             executeMethod(post);
49
50             // ログイン可否の判定.
51             // x-niconico-authflagで判定できそうだったが必ず0になる...
52             // Set-Cookieがあればログインできたとみなしているが,あまりよろしくないかも.
53             auth = (null != post.getResponseHeader("Set-Cookie")) ? true : false;
54         } catch (IOException ex) {
55             Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
56         } finally {
57             post.releaseConnection();
58         }
59         return auth;
60     }
61 }