HTTPServiceを使ってみる
FlexのHTTPServiceを使うとWebサービスの利用が簡単になりそうなのでちょっと使ってみました。
(今回のサンプルではlivedoorのWeather Hacksで提供されている「お天気Webサービス(REST)」を使用してます)
さっそく、コード。これはAdobe AIRのコードです。
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.rpc.events.ResultEvent; private function init():void { service.send(); } private function serviceResult(event:ResultEvent):void { tarea.text = event.result as String; } ]]> </mx:Script> <mx:HTTPService id="service" url="http://weather.livedoor.com/forecast/webservice/rest/v1" resultFormat="text" result="serviceResult(event)"> <mx:request> <city>63</city> <day>tommorrow</day> </mx:request> </mx:HTTPService> <mx:TextArea id="tarea" width="100%" height="100%" editable="false" /> </mx:WindowedApplication>
※パラメータのcityで63、dayにtomorrowをしていますが、これは「東京の明日の予報」を取得することを意味しています。
パラメータの詳細はお天気Webサービス仕様を参照。
これを実行すると、つぎのようなリクエストがとびました。
GET /forecast/webservice/rest/v1?city=63&day=tommorrow HTTP/1.1 Referer: app:/Test.swf Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5 x-flash-version: 9,0,115,0 User-Agent: Mozilla/5.0 (Windows; U; en) AppleWebKit/420+ (KHTML, like Gecko) AdobeAIR/1.0 Host: weather.livedoor.com Connection: Keep-Alive Cookie: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
※Cookieは伏字にしてます。
cityとdayというパラメータがちゃんと設定されていますね。
で、実行結果はこれ。
簡単にアクセスできますね。
なお、HTTPServiceのresultFormatプロパティを"text"にしてますが、TextAreaに単純に貼り付けるためにこうしました。
本来は"e4x"などを設定して、XMLとして扱った方がいいでしょう。
ちなみに、Adobe AIRからアクセスするとUser-Agentはこうなんるんですね。
User-Agent: Mozilla/5.0 (Windows; U; en) AppleWebKit/420+ (KHTML, like Gecko) AdobeAIR/1.0