試しにnsIHttpChannelなんかを触っていて、レスポンスをASCII以外の文字列として取得するためにいちいちnsIConverterInputStreamで変換しなくちゃならなくて面倒だなーとか思っていたのですが、、XMLHttpRequestでクロスドメイン関係なしにアクセスできるのを今知ったので、これからはXMLHttpRequestを使おうと思います。
ちなみに、nsIHttpChannelを使っていたときは、下記のような感じ。
var url = 'http://www.yahoo.co.jp'; var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var channel = ioService.newChannelFromURI(ioService.newURI(url, null, null)) .QueryInterface(Components.interfaces.nsIHttpChannel); var stream = channel.open(); var converterInputStream= Components.classes["@mozilla.org/intl/converter-input-stream;1"] .createInstance(Components.interfaces.nsIConverterInputStream); converterInputStream.init(stream, "EUC-JP", 4096, converterInputStream.DEFAULT_REPLACEMENT_CHARACTER); var str; var tmp = {}; while (converterInputStream.readString(4096, tmp) != 0) { str += tmp.value; } alert(str);
めんどくさすぎた。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
追記@2007/06/19
openはnsIChannelで定義されているので、わざわざQueryInterfaceする必要無しでした。(brazilさんからのコメント)