Webサーバから特定のファイルを落としてくるAIRアプリ[AIR/Flex]
(2010-09-09 02:27:16) by shinoda


< ページ移動: 1 2 >

今度作成予定の 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();

        }

    ]]>

< ページ移動: 1 2 >


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8