2006 年 7 月 23 日 16 時 16 分

自分のトップページへのアクセス


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


ログイン認証まではできたが、
肝心のトップページはまだ取得できていない。

トップページを取得するためには、
サーバが返却した Cookie を送信内容に含めた上で、
トップページ http://mixi.jp にアクセスすればよい。

幸い、Microsoft 実装の XMLHttpRequest は、
Cookie の自動的な管理機能を提供している。

これは、同じ XMLHttpRequest インスタンスを使って、
何度も Web サイトにアクセスする場合、
以前に返してもらった Cookie があれば、
それを自動的に送信してくれるという機能だ。

特に、ServerXMLHTTP (WinHTTP)を使う場合、
ユーザ環境単位ではなく、XMLHttpRequest 単位で、
Cookie (やキャッシュなど)の管理を行っているため、
異なる XMLHttpRequest インスタンスを使っても、
それらの情報は引き継がれない。
つまり、同じインスタンスを使うことに重要な意味がある。

では、昨日のコードに少し追加し、
自分のトップページを取得してみよう。

========== Main.js ==========

// _encodeForm 関数は同じなので省略する。

function main() {

    // XMLHttpRequest を用意
    var client = new XMLHttpRequest();

    // ログイン用のパラメータを用意
    var form = {
        next_url: "/home.pl",
        email: "自分のメールアドレス",
        password: "パスワード"
    };

    // POST 用に符号化する
    var content = _encodeForm(form);

    // ログイン処理(失敗のチェックはしていない)
    client.open("POST", "https://mixi.jp/login.pl", false);
    client.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded");
    client.send(content);

    // 続いて、自分のトップページを取得
    client.open("GET", "http://mixi.jp", false);
    client.send("");

    // チェックのため、HTML を出力
    WScript.Echo(client.responseText);

}

main();

========== end of Main.js ==========

XMLHttpRequest が持つ open メソッドを使えば、
そのまま新しいリクエストを送信することができる。

新しい XMLHttpRequest インスタンスを使っていないので、
XMLHttpRequest は Cookie の値を覚えており、
新しいリクエストに Cookie を追加して送信するのだ。
その機能は裏で働いているので、
今日の追加コードは、一昨日のものとまったく同じだ。

では、実行してみよう。
自分のトップページの内容が返るので、
以前より長い HTML が返されるはずだ。

また、HTML を眺めてみて、自分のマイミクシィの名前や、
最近の日記のタイトル等、見覚えのある内容があれば、
成功ということになる。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.