MoChiwakiブログ

女性エンジニアがゆる~く書く備忘録ブログ 〜だいたいいつもつまづいている〜

Cookieをかじった

Cookieをかじりました。

ええ。あのcookieですよ。

ええ。噛み切るのに時間かかりました。   

今、Javaを使って
あるサイトにログインしてその中の情報を取ってくる
というのを作っています。
えっと、だからそのアプリを起動したらログインもしてくれて、
内容も確認できるというすぐれもの!

(なんかハッキングしてるみたいw)
(いや私は悪いことはしていないwとか思ってたよ)   

ところでだがしかし!
そのログインに必要なパラメータは
IDとPASSWORDだけかと思ったら大間違い!

  • hiddenでなんか送ってるし
  • tokenとかとってちゃんとしたログインか調べてるし
  • cookieってここで送んないといけないんだ−

っていう感じ。

ちょい待ち、 っていうか。
setParameterなんてものないしー
どうパラメータ渡すねんって思っていたが、 わかってきたのでメモ!

//これだけでcookieとれちゃう!
CookieManager manager = new CookieManager();
CookieHandler.setDefault(manager);

//URL設定
URL url = new URL("http://www.hoge.com/huga.html");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setUseCaches(false);

//POSTでのパラメータ作成
connection.setRequestMethod("POST");
String parameterString = new String("parameter1=ID&parameter2=PASS&hidden=111&token=222");

//URL接続
PrintWriter printWriter = new PrintWriter(connection.getOutputStream());
printWriter.print(parameterString);
printWriter.close();

//接続したサイト読み込み
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF8"));
String httpSource = new String();
String str;
while ( null != ( str = bufferedReader.readLine() ) ) {
    httpSource = httpSource + str;
}

// Cookie を表示したければ
CookieStore store = manager.getCookieStore();
List<HttpCookie> cookies = store.getCookies();
for (int i = 0; i < cookies.size(); i++) {
    HttpCookie cookie = cookies.get(i);
    System.out.println(cookie);
}
bufferedReader.close();
connection.disconnect();

今日はcookieの送信方法ずっと調べてたけど
2行で済むことが判明した

もっと調べるスキルつけたいなー