AIRのHTTPServiceで、複数のサイトの情報をDataGridに反映しても直ぐに反映されない…。
恐らく自分の方法が駄目なんだと思うのですが、どの部分がダメなのか特定出来ません…。
人力検索してみました。
http://q.hatena.ne.jp/1214637139
下記のソースがサンプルになります。
ソースが雑だと思います。すみません。
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" verticalAlign="middle" width="582" height="334"> <mx:Script> <![CDATA[ import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.controls.Alert; //google検索 public function SearchGoogle():void { var uv:URLVariables = new URLVariables(); if(!q.text){ Alert.show("キーワードを入力して下さい。"); return; } uv.q = q.text;//検索文字 uv.num = "50";//検索結果数 googlesearch.request = uv; googlesearch.send(); } //yahoo検索 public function SearchYahoo():void { var uv:URLVariables = new URLVariables(); uv.p = q.text;//検索文字 uv.n = "100";//検索結果数 yahoosearch.request = uv; yahoosearch.send(); } //googleへの通信成功 public function GoogleResponce(event:ResultEvent):void { var str:String = event.result.toString();//レスポンス var grid:Array = new Array(); var pattern:RegExp = /<h2\sclass=r><a\shref="((https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)"/g; var URLpattern:RegExp = /(https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/; var hit:RegExp = /<b>([0-9,]+)<\/b>/; var matchStr:Array = str.match(pattern);//google検索結果からURLを抽出 //Objectを埋める for(var i:int=0; i<50; i++){ var obj:Object = new Object(); obj.id = ""; obj.googleurl = ""; grid[i] = obj; } datagrid.dataProvider = grid; for(var j:int=0; j<matchStr.length; j++){ var word:Array; word = matchStr[j].match(URLpattern); if(!word[0].match(/^http:\/\/news.google.co.jp/)){ datagrid.dataProvider[j].id = j+1; datagrid.dataProvider[j].googleurl = word[0]; } } SearchYahoo(); } //yahooへの通信成功 public function YahooResponce(event:ResultEvent):void { var str:String = event.result.toString();//レスポンス var pattern:RegExp = /<em\sclass="yschurl">[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#<>]+<\/em>/g; var matchStr:Array = str.match(pattern);//yahoo検索結果からURLを抽出 for(var j:int=0; j<50; j++){ var word:Array; var url:String = matchStr[j]; datagrid.dataProvider[j].yahoourl = url; } } //HTTP通信失敗 public function Fault(event:FaultEvent):void { Alert.show(event.fault.faultString, "Error"); } ]]> </mx:Script> <mx:HTTPService id="googlesearch" method="GET" result="GoogleResponce(event)" fault="Fault(event)" url="http://www.google.co.jp/search" resultFormat="text" /> <mx:HTTPService id="yahoosearch" method="GET" result="YahooResponce(event)" fault="Fault(event)" url="http://search.yahoo.co.jp/search" resultFormat="text" /> <mx:ApplicationControlBar x="10" y="10" width="560" height="312" cornerRadius="4"> </mx:ApplicationControlBar> <mx:TextInput id="q" x="22" y="37" width="334" height="22" /> <mx:Button x="364" y="37" label="検索" click="SearchGoogle()" width="74" height="22" /> <mx:DataGrid id="datagrid" width="539" height="229" y="67" x="22"> <mx:columns> <mx:DataGridColumn headerText="順位" dataField="id" width="40"/> <mx:DataGridColumn headerText="google検索結果URL" dataField="googleurl" width="130" /> <mx:DataGridColumn headerText="yahoo検索結果URL" dataField="yahoourl" width="130" /> </mx:columns> </mx:DataGrid> </mx:WindowedApplication>
宜しくお願いします!
[PR]Spreeの情報を集めています。
ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/
MXMLでHTTPServiceを実行してみました。
構築してみたいプログラムがあるのですが、実現する為にデスクトップアプリケーション構築が必須です。
最近actionscriptに興味があるので、その流れでAIRを使いデスクトップアプリケーションを構築することにしました。
まず練習として、MXMLでHTTPServiceというのを実行してみました。
サンプルソースはgoogleへhttp通信し、レスポンスをhtml表示するサンプルです。
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.controls.Alert; public function Search(event:Event):void { var uv:URLVariables = new URLVariables(); uv.q = q.text;//検索文字 search.request = uv; search.send(); } public function handlePlain(event:ResultEvent):void { result.data = event.result.toString(); } public function handleFault(event:FaultEvent):void { Alert.show(event.fault.faultString, "Error"); } ]]> </mx:Script> <mx:HTTPService id="search" url="http://www.google.co.jp/search" method="GET" result="handlePlain(event)" fault="handleFault(event)" resultFormat="text" /> <mx:TextInput id="q" x="130" y="32" width="160" height="22" /> <mx:Button x="130" y="95" label="検索" click="Search(event)" width="160" height="22" /> <mx:HTML id="result" /> </mx:WindowedApplication>
[PR]Spreeの情報を集めています。
ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/