Flex的HttpService的写法

               

 

     flex和后台交互数据最重要是通过异构传输的httpserivce的xml结构。而高效率合理的异步传输数据是flex的开发中的核心。我就公开一下自己面向接口的httpservice的写法。希望有人可以指正。

   首先第一个接口是决定通过获取xml的接口:

   package com.sunshine.framework.serviceif{ public interface UrlResultXml {  function getResultXml(xmlUrl:String=null,urlResult:UrlResult=null,postValue:Object=null):void; }}

主要的传入参数有url地址,xml的处理接口和post的参数;

 

get的httpservice的实现类是:

 

ackage com.sunshine.framework.service{ import com.sunshine.framework.serviceif.UrlResultXml; import com.sunshine.framework.serviceif.UrlResult; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; public class GetUrlResultXml extends BaseUrlResult implements UrlResultXml {  private var xmlService:HTTPService;  private var parameterXML:XML;  //处理接口  private var _urlResult:UrlResult;  public function GetUrlResultXml()  {   super();  }  public function getResultXml(xmlUrl:String=null, urlResult:UrlResult=null, postValue:Object=null):void  {   this._urlResult=urlResult;   xmlService=new HTTPService();   xmlService.method="GET";   xmlService.useProxy=false;   xmlService.resultFormat=HTTPService.RESULT_FORMAT_XML;   xmlService.addEventListener("result", httpResult);   xmlService.url=xmlUrl;   xmlService.send();  }  public function httpResult(event:ResultEvent):void  {   parameterXML=XML(event.result);   this._urlResult.handleXml(parameterXML);  } }}

 

post的httpservice的接口:

package com.sunshine.framework.service{ import com.sunshine.framework.serviceif.UrlResultXml; import com.sunshine.framework.serviceif.UrlResult; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; public class PostUrlResultXml extends BaseUrlResult implements UrlResultXml {  private var xmlService:HTTPService;  private var parameterXML:XML;  private var _postValue:Object;  public function PostUrlResultXml()  {   super();  }  public function getResultXml(xmlUrl:String=null, urlResult:UrlResult=null, postValue:Object=null):void  {   this._urlResult=urlResult;   xmlService=new HTTPService();   xmlService.method="post";   xmlService.useProxy=false;   xmlService.resultFormat=HTTPService.RESULT_FORMAT_XML;   xmlService.addEventListener("result", httpResult);   xmlService.url=xmlUrl;   xmlService.send(postValue);  }  public function httpResult(event:ResultEvent):void  {   parameterXML=XML(event.result);   this._urlResult.handleXml(parameterXML);  }  public function set PostValue(value:Object):void  {   this._postValue=value;  }  public function get PostValue():Object  {   return _postValue;  } }}

 

 

http的xml处理接口:

package com.sunshine.framework.serviceif{ public interface UrlResult {  function handleXml(resultXml:XML):void; }}

 

简单的处理接口的实现例子:

package com.sunshine.framework.service{ import com.sunshine.framework.serviceif.UrlResult;         import mx.controls.Alert;  public class ConfigUrlResult implements UrlResult {  public function ConfigUrlResult()  {  }  public function handleXml(resultXml:XML):void  {   Alert.show(resultXml.toXmlString());  } }}

 

这么写的话也可以增加类的重用性,减少编码。其实以上方法不是很成熟的,有更好的办法可以交流哦

 

在新的项目中,我发现上面2个方法的局限,我修改了一一下写了2个新的类,可以提高开发效率:

package com.shine.framework.httpService{ import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; public class BaseGetHttpService {  private var xmlService:HTTPService;  private var method:Function;  public function BaseGetHttpService()  {  }  public function getResultXml(xmlUrl:String, method:Function):void  {   this.method=method;   xmlService=new HTTPService();   xmlService.method="GET";   xmlService.useProxy=false;   xmlService.resultFormat=HTTPService.RESULT_FORMAT_XML;   xmlService.addEventListener("result", httpResult);   xmlService.url=xmlUrl;   xmlService.send();  }  private function httpResult(event:ResultEvent):void  {   resultXml(XML(event.result));  }  protected function resultXml(value:XML):void  {   method.call(this, value);  } }}

 

package com.shine.framework.httpService{ import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; public class BasePostHttpService {  private var xmlService:HTTPService;  private var method:Function;  public function BasePostHttpService()  {  }  public function getResultXml(xmlUrl:String, method:Function, postValue:Object=null):void  {   this.method=method;   xmlService=new HTTPService();   xmlService.method="post";   xmlService.useProxy=false;   xmlService.resultFormat=HTTPService.RESULT_FORMAT_XML;   xmlService.addEventListener("result", httpResult);   xmlService.url=xmlUrl;   xmlService.send(postValue);  }  private function httpResult(event:ResultEvent):void  {   resultXml(XML(event.result));  }  protected function resultXml(value:XML):void  {   method.call(this, value);  } }}

           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值