Webサーバから特定のファイルを落としてくるAIRアプリ

今度作成予定の Adobe AIR アプリに、Webサーバ上から特定のファイルを落としてくる機能をつけないといけないので、どんな方法があるか試してみようと思って、取りあえず URLLoader + URLRequest クラス利用で作ってみた。

「受信スタート」ボタンを押したら、Web サーバ上の画像ファイルを取得し、それを hoge.jpg という名前で書き出すだけのプログラム。

最初は HTTPService クラスを使った方がいいのかなと(だって名前がそのものずばりだから)色々やってみたのだが、どうも HTTPService クラスは Web サービス用?
データをどうしても ByteArray で取り出せないので諦めた。
XML や CSV などのテキストデータではうまくいったんだけどなあ。

で、取りあえず URLLoader + URLRequest クラスを利用してデータを取得するパターンのソースが↓こんな感じ。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="274" height="120">
   
    <mx:Script>
    <![CDATA[

        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLLoaderDataFormat;
        import flash.net.URLRequest;
        import flash.net.URLRequestHeader;
        import flash.net.URLVariables;
        import flash.utils.ByteArray;

        private function getHttp():void {

            var req:URLRequest = new URLRequest();
            req.url    = "http://www.exsample.com/test/hoge.jpg";
            req.userAgent    = "Test Bot 1.0";

            var loader:URLLoader = new URLLoader();

            loader.addEventListener(Event.COMPLETE,loadComp);

            loader.dataFormat = URLLoaderDataFormat.BINARY;
            loader.load(req);

        }

        private function loadComp(event:Event):void{

            var urlLoader:URLLoader = event.target as URLLoader;
            var byte:ByteArray    = urlLoader.data as ByteArray;

            var file:File    = File.userDirectory.resolvePath("hoge.jpg");
            var stream:FileStream    = new FileStream();
            stream.openAsync(file, FileMode.WRITE);
            stream.writeBytes(byte, 0, byte.bytesAvailable);
            stream.close();

        }

    ]]>
    </mx:Script>

    <mx:Button x="93.5" y="20" label="受信スタート" id="button1" click="getHttp();"/>

</mx:WindowedApplication>

最初、取得するデータの型を

    loader.dataFormat = URLLoaderDataFormat.BINARY;

という具合に指定してなかったので(多分、ディフォルト値は'TEXT'?)、ハマってしまった。
いやあ、日頃、データ型の無い Perl を使うことが多いんでねえ。

バイナリだろうがテキストだろうが、生のデータを返してくるプロパティがあればいいのにな。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Webサーバから特定のファイルを落としてくるAIRアプリ

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1275

コメントする

このブログ記事について

このページは、shinodaが2010年9月 9日 02:27に書いたブログ記事です。

ひとつ前のブログ記事は「ひろしまランメンって・・・不味いよね?(^^;」です。

次のブログ記事は「AIR アプリで BASIC 認証を行う」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら