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の日記

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


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

『Socketオブジェクトで遊ぶ。いや遊ばれる』へのコメント

  1. 名前:t3 投稿日:2008/10/12(日) 08:34:45 ID:fe411dcde 返信

    はじめまして、せうぞーさんのサイトから流れてきました。
    こちらでテストしました。こんな感じで2度接続すると日本語も取得できるようです。テストしたのはInDesignCS2です。
    reply = "";
    conn = new Socket;
    if (conn.open ("www15.ocn.ne.jp:80","SJIS")) {
      conn.write ("GET /index.html HTTP/1.0\n\n");
      conn.close();
    }
    if (conn.open ("www15.ocn.ne.jp:80","SJIS")) {
      conn.write ("GET /index.html HTTP/1.0\n\n");
      reply = conn.read(999999);
      conn.close();
    }
    txf = app.activeDocument.textFrames[0];
    txf.contents = reply;

  2. 名前:お~まち 投稿日:2008/10/12(日) 11:48:02 ID:ec1a0e895 返信

    いやー、できるんですね。ありがとうございます。
    今、自宅なのでテストできないんですが、今度会社でやってみます。
    リファレンスではopenの引数にASCII、binary、UTF-8しか書いてなかったのでSJISが使えるとは思いもよりませんでした。
    これからもよろしくお願いします。

  3. 名前:お~まち 投稿日:2008/10/12(日) 11:57:02 ID:ec1a0e895 返信

    今見返してみたらコードの一部がテストしたものと違ってました。ご迷惑をおかけしました。