flex的httpservice返回的值有时候完整有时候不完整,急死了

pandy_peng 2010-11-26 05:19:33
我使用的是flex+.net,使用httpservice进行交互,使用的是flexviewer,我在同一个页面中使用了两个httpservice服务,一个是在地图上创建图表,一个是在窗体中创建图表,但是获取的数据有时候完整,有时候不完整,是怎么回事啊?
关键代码如下
private function init():void{
if(configXML){
selectedType=configXML.SelectType;
selectedID=configXML.SelectType.@ID;

GetData("2008",selectedID);
GetDtByYear("2008");
}
private function GetData(oVar1:String,oTypeId:String):void{

httpService = new HTTPService();
var temUrl:String=GetValueByID("byparent",configXML.urls);
if(oVar1!="" && oTypeId!="-1"){
httpService.url=temUrl+"?year="+oVar1+"&type="+oTypeId;
}else{
httpService.url=temUrl+"?year=2008&type=1";
}
httpService.method="POST";
httpService.resultFormat="e4x";
httpService.requestTimeout = 10;
httpService.addEventListener(ResultEvent.RESULT,resultHandler);
httpService.send();
}
private function resultHandler(event:ResultEvent):void{
this.graphicsLayerId.clear();
var xmlResult:XML=event.result as XML;

for each(var xml:XML in configXML.Areas.children()){
var point:MapPoint=new MapPoint(Number(xml.@xcoord),Number(xml.@ycoord));
var grap:Graphic=new Graphic(point);
grap.attributes=new Object();
var thematic:ArrayCollection=getCollection(xml.toString(),xmlResult);
grap.attributes.thematic=thematic;
this.graphicsLayerId.add(grap);
}
}
private function GetDtByYear(tempYear:String):void{
var tempType:String=cmblineType.selectedLabel;
var tpID:String=getTheID(tempType,configXML.Types);
var tempUrl:String=GetValueByID("area",configXML.urls)+"?year="+tempYear+"&typeId="+tpID;

GetChartData(tempUrl);
}
private function GetChartData(ourl:String):void{
httpService = new HTTPService();
httpService.url=ourl;
httpService.method="POST";
httpService.resultFormat="e4x";
httpService.requestTimeout = 10;
httpService.addEventListener(ResultEvent.RESULT,resultClick);
httpService.send();
}
private function resultClick(event:ResultEvent):void{
var resultXML:XML=event.result as XML;
var collectionArr:ArrayCollection=new ArrayCollection();
for each(var tempXML:XML in resultXML.children()){
collectionArr.addItem(tempXML);
}
//绑定数据
lineChart.dataProvider=collectionArr;
clmChartId.dataProvider=collectionArr;
}
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pandy_peng 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xuhuanchao 的回复:]
httpService url上加上随机参数试试
[/Quote]
不太明白你的意思,但我的url就是带参数的。
pandy_peng 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mousejerry1220 的回复:]
我在socket通讯中也发现了这个问题。httpservice也是基于TCP/IP的,可能是同样的原因。你看看你返回值完整的时候数据的大小占多少个字节,数据不完整的时候数据占多少个字节。测试一下,不要返回太多的数据。可能是数据量过大的原因。我今天发现在socket通讯的时候只要数据不超过10220个字节数据是OK的,当超过这个范围的时候数据就会发生错误。FLEX socket是不需要关心粘包的。
[/Quote]
那该怎么解决啊?
水中影子 2010-11-27
  • 打赏
  • 举报
回复
httpService url上加上随机参数试试
leemiki 2010-11-27
  • 打赏
  • 举报
回复
为什么不用RemoteObject

传输数据量一大,HTTPService和RemoteObject效率上根本就不是一个档次的
mousejerry1220 2010-11-26
  • 打赏
  • 举报
回复
我在socket通讯中也发现了这个问题。httpservice也是基于TCP/IP的,可能是同样的原因。你看看你返回值完整的时候数据的大小占多少个字节,数据不完整的时候数据占多少个字节。测试一下,不要返回太多的数据。可能是数据量过大的原因。我今天发现在socket通讯的时候只要数据不超过10220个字节数据是OK的,当超过这个范围的时候数据就会发生错误。FLEX socket是不需要关心粘包的。
pandy_peng 2010-11-26
  • 打赏
  • 举报
回复
什么意思啊?
fw176170847 2010-11-26
  • 打赏
  • 举报
回复
这玩意也有粘包的问题?

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧