[Flex]利用HTTPService实现Flex与服务器端低数据量通信

        Flex作为企业级的开发平台,与服务器端的通信是至关重要的。传统的Flash与服务器端主要通过HTTP、WebService和Flash Remoting方式通信,Flex除了保留了Flash平台与服务端通信方式外增加了一系列的高级服务功能。Flex与服务端通信主要分为两大类:一类 是通过传统的HTTP方式发送请求来和服务器端进行交互,另外一类则是通过LCDS等与服务端进行通信。

      低数据量的通信我们一般会选择Http方式来进行通信。通过HTTP方式Flex可以与任意服务器端进行通信。通过HTTP与服务器端通信又可以通过 HTTP请求方式和WebService实现。前者使用异步的HTTP请求方式,使用方式与Ajax一致,而后者则是通过标准的WebService协议 与服务端进行通信。下面我们看下HTTPService方式的通信,查阅相关的帮助文档我们可以知道HTTPService一些常用的方法和属性:

属性

method:发送HTTP请求的方法

 url : 请求服务的位置

request:发送请求的参数

requestTimeout:请求超时的时间

useProxy:是否使用代理的别名服务

方法:

send:参数为object类型默认为null,返回值类型为AsyncToken,执行一个HTTPService的请求

下面我们通过一个获取新浪体育新闻汇总的示例来说明HTTPService的使用

 


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="sinaSport.send()">
<mx:Style>
    global
    {
        fontSize:14pt;
    }
</mx:Style>
    
<mx:HTTPService id="sinaSport" url="http://rss.sina.com.cn/roll/sports/hot_roll.xml" useProxy="false">
    
</mx:HTTPService>
    
<mx:Panel x="53" y="90" width="975" height="461" layout="absolute" title="新浪体育要闻汇总 ">
    
<mx:DataGrid id="sportContent" x="23.5" y="10" width="911.5" dataProvider="{sinaSport.lastResult.rss.channel.item}" height="175">
        
<mx:columns>
            
<mx:DataGridColumn  width="300" headerText="标题" dataField="title"/>
            
<mx:DataGridColumn  width="150" headerText="作者" dataField="author" />
            
<mx:DataGridColumn  width="150" headerText="日期" dataField="pubDate" />
        
</mx:columns>
    
</mx:DataGrid>
    
<mx:TextArea x="23" y="193" width="912" height="183" htmlText="{sportContent.selectedItem.description}"/>
 
<mx:LinkButton x="855" y="384" label="详细信息" click="navigateToURL(new URLRequest(sportContent.selectedItem.link))"/>
    
</mx:Panel>
    
</mx:Application>

示例运行效果如下图:

在上面的代码中通过 如下代码声明了HTTPService 数据的位置


<mx:HTTPService id="sinaSport" url="http://rss.sina.com.cn/roll/sports/hot_roll.xml" useProxy="false">
    
</mx:HTTPService>

 

通过


<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="sinaSport.send()">

进行数据的发送

服务器端返回的结果则是通过sinaSport.lastResult来引用最后通过DataGrid来显示数据。

         从这个简单的例子我们可以看出因为HTTPService不是标准协议,基于HTTPService的通信方式访问的数据格式是由服务端来制定的,所以在 使用中要求Flex端与服务端的数据处理方式和交换格式一致。基于HTTP协议访问一般都通过纯文本数据进行传输。Flex能够轻松的将之转换为 ActionScript对象。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏