您的位置:首页 > 理论基础 > 计算机网络

【转】Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据

2010-09-19 20:52 555 查看
在前两篇文章中分别介绍了Flex与.NET的WebService之间的数据交互通信知识,本文将介绍另外一种加载数据以及发起请求的方式。ActionScript 3.0中提供的数据加载请求类主要是HTTPService,URLLoader和URLRequest,可以通过他们协同来完成数据加载和请求。下面我么便来看看这三个类是怎么来完成数据加载工作。

在本地IIS服务器上有如下定义的XML文件:

1 <?xml version="1.0" encoding="utf-8" ?>
2 <Root>
3 <Book>
4 <Id>1</Id>
5 <Name>《三国演义》</Name>
6 <Author>罗贯中</Author>
7 <Price>52.30</Price>
8 </Book>
9 <Book>
<Id>2</Id>
<Name>《西游记》</Name>
<Author>吴承恩</Author>
<Price>39.91</Price>
</Book>
<Book>
<Id>3</Id>
<Name>《红楼梦》</Name>
<Author>曹雪芹</Author>
<Price>48.20</Price>
</Book>
<Book>
<Id>4</Id>
<Name>《水浒传》</Name>
<Author>施耐庵</Author>
<Price>39.85</Price>
</Book>
</Root>

一、使用HTTPService传递和加载数据

使用HTTPService可以实现加载数据,也可以实现参数传递,下面通过两个示例程序来讲解这两个知识点。

首先来看看HTTPService加载数据的方式。在Flex中使用HTTPService来装载外部数据是非常简单的,他是基于HTTP协议发送POST和GET请求外部数据,然后通过指定的监听方法来处理响应。我们可以通过<mx:HTTPService>标签来完成对数据源的连接,也可以通过可编程方式来处理,两种方式没什么大的差距,实际开发中可以根据自己喜好选择。

1 internal function onClick():void
2 {
3 var service:HTTPService = new HTTPService();
4 service.url = "http://localhost:1146/Data/Book.xml";
5 service.useProxy = false;
6 service.resultFormat="e4x";
7 service.addEventListener(ResultEvent.RESULT,onResultHandler);
8 service.send();
9 }

internal function onResultHandler(evt:ResultEvent):void
{
var xml:XML = evt.result as XML;
trace(xml);
bookGrid.dataProvider = xml.Book;
}

该示例的运行结果见文章最后,下面是这个示例的完整代码:

mxml完整代码
1 <?xml version="1.0" encoding="utf-8"?>
2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
3 <mx:Script>
4 <![CDATA[
5 internal function onClick():void
6 {
7 var request:URLRequest = new URLRequest("http://localhost:1146/Data/Book.xml");
8 var loader:URLLoader = new URLLoader();
9 loader.load(request);
loader.addEventListener(Event.COMPLETE,onCompleteHandler);
}

private function onCompleteHandler(evt:Event):void
{
var xml:XML = new XML(evt.target.data);
bookGrid.dataProvider = xml.Book;
}
]]>
</mx:Script>
<mx:Panel x="49.5" y="94" width="419" height="267" layout="absolute" fontSize="12" borderColor="#E2E2E2" themeColor="#009DDF" title="使用URLLoader加在XML数据">
<mx:DataGrid x="10" y="10" width="377" id="bookGrid">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="Id"/>
<mx:DataGridColumn headerText="书名" dataField="Name"/>
<mx:DataGridColumn headerText="作者" dataField="Author"/>
<mx:DataGridColumn headerText="价格" dataField="Price"/>
</mx:columns>
</mx:DataGrid>
<mx:ControlBar height="42">
<mx:Button label="加载数据" fontWeight="normal" click="onClick()"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>

本示例的运行结果如下图:



关于URLLoader的更多资料大家可以查看Adobe提供的在线文档:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/URLLoader.html

版权说明

本文属原创文章,欢迎转载,其版权归作者和博客园共有。

作 者:Beniao

文章出处:http://beniao.cnblogs.com/http://www.cnblogs.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐