Firefox用のJavaScriptコンポーネントを作成しています。このコンポーネントは、郵便番号を受け取り、現在の気象条件を返します。
アンダーグラウンドで使用されるサンプルコードはjQueryを使用していますが、私が理解しているように、javascriptには他のjavascriptファイルを含める機能がないため、このコードをjavascriptコンポーネントに含めることはできません。
とにかく、私は自分のスケルトンコードを構築しました。郵便番号を受け取り、URLを作成します
(例:http ://api.wunderground.com/api/e17115d7e24a448e/geolookup/conditions/q/22203.json )
次の方法で、そのURLからデータをダウンロードしてみました。
getWeatherByUrl: function(url)
{
var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD",Components.interfaces.nsILocalFile);
file.append("weather-forecaster.dat");
var urlURI = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(url, null, null);
persist.saveURI(urlURI,null,null,null,"",file);
return url;
}
これにより、ファイルがユーザーのプロファイルディレクトリにダウンロードされます。それは確かにそこにファイルを作成します。ただし、地下の天気からのjsonデータが含まれているようには見えません。
正確には何が起こっているのですか?ファイルをダウンロードするにはどうすればよいですか?そのURLがWeatherUndergroundに渡されるときにクエリが実行されていると思いますが、.jsonページがそれらから吐き出されるので、それは問題ではありませんよね?
ファイルをダウンロードせずに、ストリーミングして解析することでこれを行う方法はありますか?