java Web与Flex通过HTTP service 通信 并解析Map 数据。

上篇通过Flex remoting 通信,进入调用方法后,发现并没有获取到Spring 注入的bean对象。bean 为 null

so...修改为 HTTPService 的方式。

废话不多说,

1.Flex 通过 HTTPService 请求服务器 代码如下

public function getFlexDupont(companyA:String,companyB:String,data:String):void{
var service:HTTPService = new HTTPService();
service.method="POST";
service.contentType="application/xml";            
service.resultFormat=HTTPService.RESULT_FORMAT_OBJECT; service.url = encodeURI(
encodeURI("http://localhost:8081/项目名称/chart/chart.do?method=getDupont&companyA="+companyA+"&companyB="+companyB+"&data="+data)); //resultDupont 返回方法。 service.addEventListener(ResultEvent.RESULT, resultDupont); service.send();

 

2.服务器后台方法。

public void getDupont(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)throws Exception{
        JSONObject jsonObj = new JSONObject();
        response.setContentType("text/html;charset=UTF-8"); 
//处理省略
response.setCharacterEncoding("UTF-8");
//response.getWriter().print(map);
//上方map 因为我这边传给flex的时候有空格,so 自己传输了个大字符串过去
response.getWriter().print(map.toString().substring(1, map.toString().length()-1));

 

3.Flex解析代码

//发过来数据结构  Acompany=123,Bcompany=345,......
import
mx.utils.StringUtil; [Bindable] private var acompany:String; public function resultDupont(event:ResultEvent):void{ var str:String=event.result.toString(); var arrNum:Array = new Array(); arrNum = str.split(","); for(var i:int=0;i<arrNum.length;i++){ var arryNum:Array = new Array(); arryNum = arrNum[i].toString().split("="); if(StringUtil.trim(arryNum[0].toString()) == "Acompany"){ acompany = arryNum[1].toString(); }    }
}

 

说明:因为lz这么穿过来的Map的key中有空格,当时赶进度,也没去查为啥转过来会有空格了。

so..自己写了个解析 图方便。

Flex中解析Map 有此两种方式

//第一种 Acompany 为key,这里通过key直接获取到值
event.result["Acompany"].toString();

//第二种 这里通过obj.key ,key为java中的key的值。
var obj:Object=event.result.toString();
obj.Acompany.toString();

 

posted @ 2014-04-14 17:48  登山看日出  阅读(265)  评论(0编辑  收藏  举报