FLEX 中的HTTPService对象返回值,如何获取?
HTTPService类文件:DownMarkerXML.ASpackagemodel{importmx.rpc.events.FaultEvent;importmx.r...
HTTPService类文件:DownMarkerXML.AS
package model
{
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
public class DownMarkerXML{
private var httpService:HTTPService;
public var Result_String:String = "返回变量";
public function DownMarkerXML(){
httpService = new HTTPService();
}
public function sendReq(strURL:String):void{
httpService.url = strURL;
httpService.useProxy = false;
httpService.resultFormat = "xml";
httpService.method = "GET";
httpService.addEventListener(ResultEvent.RESULT, loadAddr); //请求成功,返回了想要的数据
httpService.addEventListener(FaultEvent.FAULT, myFaultErrorEvent); //请求失败,抛出异常
httpService.send();
}
public function loadAddr(event:ResultEvent):void{
if(httpService.lastResult != null){
var markerXML:XML = XML(httpService.lastResult);
trace("fanhuizhi"+markerXML.name.toString());
this.Result_String=markerXML.name.toString();
}
}
public function return_Data():String{
return this.Result_String;
}
public function myFaultErrorEvent(myFaultEvent:FaultEvent):void{ //异常处理函数
trace(myFaultEvent.message);
}
}
}
我在调用时
var fetcher:DownMarkerXML = new DownMarkerXML();
fetcher.sendReq("http://localhost:8080/test/index.jsp?txtMessage=true");
var Return_Msg:String;
Return_Msg=fetcher.return_Data();
trace("Return_Msg); //为什么这里的"Return_Msg"还不是返回后的新数据,还是初始化的数据?要怎样才能获取到服务器返回的数据? 展开
package model
{
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
public class DownMarkerXML{
private var httpService:HTTPService;
public var Result_String:String = "返回变量";
public function DownMarkerXML(){
httpService = new HTTPService();
}
public function sendReq(strURL:String):void{
httpService.url = strURL;
httpService.useProxy = false;
httpService.resultFormat = "xml";
httpService.method = "GET";
httpService.addEventListener(ResultEvent.RESULT, loadAddr); //请求成功,返回了想要的数据
httpService.addEventListener(FaultEvent.FAULT, myFaultErrorEvent); //请求失败,抛出异常
httpService.send();
}
public function loadAddr(event:ResultEvent):void{
if(httpService.lastResult != null){
var markerXML:XML = XML(httpService.lastResult);
trace("fanhuizhi"+markerXML.name.toString());
this.Result_String=markerXML.name.toString();
}
}
public function return_Data():String{
return this.Result_String;
}
public function myFaultErrorEvent(myFaultEvent:FaultEvent):void{ //异常处理函数
trace(myFaultEvent.message);
}
}
}
我在调用时
var fetcher:DownMarkerXML = new DownMarkerXML();
fetcher.sendReq("http://localhost:8080/test/index.jsp?txtMessage=true");
var Return_Msg:String;
Return_Msg=fetcher.return_Data();
trace("Return_Msg); //为什么这里的"Return_Msg"还不是返回后的新数据,还是初始化的数据?要怎样才能获取到服务器返回的数据? 展开
3个回答
展开全部
采用BlazeDS的Remote Object好处是显而易见的,只需要维护后端server部分的java对象结构即可,flex前段采用<mx:RemoteObject>的destination索引即可(简单的配置即可)。但是坏处就是对于其他接入方式支持不了,同时对于前台显示方式也有所限制了。
采用http service的方式,可能会浪费一部分xml解析的时间,损失一部分效率(当前flex前端也不得不额外多出很多object的构造)。但是通用性将得到保证。
调用fetcher.return_Data()时,可能数据根本没有读取完成,即没有调用loadAddr方法。所以取得的Return_Msg就是初始化的数据。
应用采用监听事件的方式来取得Return_Msg。
例如在loadAddr抛出个事件,调用的时候监控一下这个事件,再去取得Return_Msg。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为httpService采用的是异步处理操作
在你调用fetcher.return_Data()时,可能数据根本没有读取完成,即没有调用loadAddr方法。所以取得的Return_Msg就是初始化的数据。
应用采用监听事件的方式来取得Return_Msg。
例如在loadAddr抛出个事件,调用的时候监控一下这个事件,再去取得Return_Msg
在你调用fetcher.return_Data()时,可能数据根本没有读取完成,即没有调用loadAddr方法。所以取得的Return_Msg就是初始化的数据。
应用采用监听事件的方式来取得Return_Msg。
例如在loadAddr抛出个事件,调用的时候监控一下这个事件,再去取得Return_Msg
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询