模拟Http远程访问
在Flex项目的根目录中常见data目录中创建文件books.xml
books.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<data>
<!--可以有多个book元素-->
<book>
<titleid>BN001</titleid>
<title>How to Program Good</title>
<pubid>1528</pubid>
<auid>459-89-78</auid>
<price>45</price>
<notes>A guide to creating great Software .</notes>
<pubdate>2009-02-06</pubdate>
</book>
</data>
使用httpservice请求方式:
1 使用引用返回数据的绑定的表达式
2 使用数据返回时执行ActionScript代码的事件监听器
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script >
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;
[Bindable]
private var myData:ArrayCollection;
/**
* 远程请求的处理
*
*/
private function resultHandler(event:ResultEvent):void
{
myData=event.result.data.book;
}
/**
* 远程方法错误的处理方法
*
*/
private function faultResultHandler(event:FaultEvent):void
{
Alert.show(event.fault.faultString,event.fault.faultCode);
}
]]>
</mx:Script>
<mx:HTTPService id="contactService" url="data/books.xml" result="resultHandler(event)" fault="faultResultHandler(event)" />
<mx:Button label="获取数据" click="contactService.send()" x="69" y="268"/>
<!--基于请求的HTTPService处理-->
<mx:DataGrid id="requestHandlerdg" dataProvider="{myData}" x="5" y="0" width="390" height="122"/>
<!--基于事件的HTTPService处理-->
<mx:DataGrid id="clickHandlerdg" dataProvider="{contactService.lastResult.data.book}" x="5" y="130" width="390" height="130"/>
</mx:Canvas>