Socketオブジェクトで遊ぶ。いや遊ばれる

Extend Script Toolkit 2 のヘルプで Core JavaScript Classes を見てたのだが、「え? Socketオブジェクトがあるの?」ということで調査開始!
リファレンスの該当ページはすぐ見つかった。Extend Script Toolkit 2 がインストールされているフォルダの、「SDK」フォルダの中、「JavaScript Tools Guide CS3.pdf」がそれだ。そ180ページ目Socketオブジェクトがある。270ページにSocketオブジェクトBridge、InDesign、After Effectsで使えると書いてある。これは試してみねばなるまい。

早速リファレンスのサンプルを応用して、htmlファイルを取得し、それInDesignのテキストフレームに流し込むことにしよう。

reply = "";
conn = new Socket;
if (conn.open ("www15.ocn.ne.jp:80","UTF-8")) {
    conn.write ("GET /~preopen/index.html HTTP/1.0\n\n");
    reply = conn.read(999999);
    conn.close();
}
txf = app.activeDocument.textFrames[0];
txf.contents = reply;

とやってみた。おお、見事にテキストフレームhttpリクエストhtmlのテキストが書き込まれているぞ。でも日本語は化けている。当たり前だ、自分のホームページはシフJISで書いてあるからな。それUTF-8で取得したから当然文字化けするわな。でUTF-8の代わりにデフォルトASCII、まbinaryでも試してみる。うまくいかない。ためしunescape関数decodeURI関数をかませてみてもダメ。
それならブログのほうはどうだ? これUTF-8だぞ。ところ302エラー。せうぞーさんのところYUJIさんのところ302エラー。どうもサーバーとドメインの関係で、取得できないっぽい。
それじゃあ、サンプルに戻ってアドビのページにしようwww.adobe.com/ja/index.htmlを試す。お、うまくいったかな? と思ったら、日本語部分が消えてる!
闘4時間(でもないか)、結局成功できずじまい。ああ、これができたらやりたいこといっぱいあるのにな。


2008.10.14 11:21 追記
関連記事が書き込まれています。

[InDesign][AppleScript][ruby]WebサイトのコンテンツInDesignに取り込む

InDesignでSocketクラスの上位クラスを作HTTPでアクセス - CLの日記

ひえー、難しいよー。自分の無知を思い知らされてます。もっと勉強しなくちゃ。


※公開時のサイトの場合。