`
flyinglife
  • 浏览: 132180 次
社区版块
存档分类
最新评论

flex httpservice 交互方式

    博客分类:
  • flex
阅读更多
转载:http://cs.ntsky.com/flex3-java-json.html

 

Flex在做界面开发的时候有很多优势,Flex+java的组合也越来越流行,在整合开发的过程中自然会遇到数据交互的问题,下面介绍Flex3+Java整合使用json的情况。

一、Flex3中使用json需要corelib.swc

   http://www.adobe.com/cfusion/exchange/index.cfm?view=sn111&extid=1078469

   将corelib.swc拷贝到Flex安装目录的sdks\3.0.0\frameworks\libs下

二、Java中进行数据处理得到json格式的数据,部分代码

Java代码
Java代码 
/**    
 * 浏览器直接返回信息    
 *     
 * @param content 内容    
 * @param character 编码    
 * @throws IOException    
 */     
protected void out(String content,String character) throws IOException {       
    HttpServletResponse response = ServletActionContext.getResponse();      
    response.setContentType("text/html;charset="+character);       
    PrintWriter out = response.getWriter();      
    out.print(content);      
    out.flush();      
    out.close();      
}      
     
    try{       
        Author author = authorService.getAuthorByName(username);      
        if( author==null ){       
            JSONObject json = new JSONObject();       
            json.put("status","0");       
            json.put("message","用户名不存在");       
            super.out(json.toString());       
        }      
        if(author.getPassword().equals(MD5.md5(password))){       
            session.put(Symbols.SESSION_AUTHOR, author);      
            JSONObject json = new JSONObject();       
            json.put("status","1");       
            json.put("message","登录成功");       
            super.out(json.toString());                    
        }      
        else{       
            JSONObject json = new JSONObject();       
            json.put("status","0");       
            json.put("message","密码错误");       
            super.out(json.toString());            
        }      
              
    }      
    catch(ServiceException se){       
        JSONObject json = new JSONObject();       
        json.put("status","0");       
        json.put("message","登录失败");       
        super.out(json.toString());        
        throw new Exception(se);       
    } finally {       
    }             
    return NONE;      

/**  
 * 浏览器直接返回信息  
 *   
 * @param content 内容  
 * @param character 编码  
 * @throws IOException  
 */  
protected void out(String content,String character) throws IOException {    
    HttpServletResponse response = ServletActionContext.getResponse();   
    response.setContentType("text/html;charset="+character);    
    PrintWriter out = response.getWriter();   
    out.print(content);   
    out.flush();   
    out.close();   
}   
  
    try{    
        Author author = authorService.getAuthorByName(username);   
        if( author==null ){    
            JSONObject json = new JSONObject();    
            json.put("status","0");    
            json.put("message","用户名不存在");    
            super.out(json.toString());    
        }   
        if(author.getPassword().equals(MD5.md5(password))){    
            session.put(Symbols.SESSION_AUTHOR, author);   
            JSONObject json = new JSONObject();    
            json.put("status","1");    
            json.put("message","登录成功");    
            super.out(json.toString());                 
        }   
        else{    
            JSONObject json = new JSONObject();    
            json.put("status","0");    
            json.put("message","密码错误");    
            super.out(json.toString());         
        }   
           
    }   
    catch(ServiceException se){    
        JSONObject json = new JSONObject();    
        json.put("status","0");    
        json.put("message","登录失败");    
        super.out(json.toString());     
        throw new Exception(se);    
    } finally {    
    }          
    return NONE;      
三、Flex中请求URL得到json的数据,然后在script中解析json数据

XML/HTML代码
  Xml代码 
<?xml version="1.0" encoding="utf-8"?>     
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"        
    horizontalAlign="center"        
    verticalAlign="middle"        
    verticalGap="15"      
    horizontalGap="15">      
          
    <mx:Script>      
        <![CDATA[    
            import mx.collections.ArrayCollection;    
            import mx.rpc.events.ResultEvent;    
            import com.adobe.serialization.json.JSON;     
            import mx.controls.Alert;    
                
            [Bindable]    
            private var photoFeed:ArrayCollection;    
   
            private function doLogin():void {    
                trace("start send");    
                var params:Object = new Object();    
                params.username = username.text;    
                params.password = password.text;    
                loginCheck.send(params);    
                trace("end send");    
            }    
   
            private function doCancel():void {    
                username.text = "";    
                password.text = "";    
            }    
   
            private function loginHandler(event:ResultEvent):void {    
                    
                var rawData:String = String(event.result);    
                    
                //decode the data to ActionScript using the JSON API    
                //in this case, the JSON data is a serialize Array of Objects.    
                var arr:Array = (JSON.decode(rawData) as Array);    
                var dataArray:ArrayCollection = new ArrayCollection(arr);    
                //arraySize = dataArray.length;    
                        
                // info.text = event.result.toString();    
                var obj:Object = JSON.decode(rawData);    
               
                if(obj.status==1){    
                     var request:URLRequest = new URLRequest();    
                     request.method = URLRequestMethod.GET;    
                     request.url = "http://test.ntsky.com:8080/admin/posts.action";    
                     // request.    
                     var loader:URLLoader = new URLLoader();    
                     navigateToURL(request,"_self");    
                }    
                else{    
                    Alert.show(obj.message);    
                }    
            }    
                
         ]]>     
    </mx:Script>           
          
    <mx:HTTPService id="loginCheck"      
        url="http://test.ntsky.com:8080/admin/login.action"      
        resultFormat="text"      
               
        result="loginHandler(event)" />      
     
    <mx:Panel x="330" y="192" width="290" height="177" layout="absolute" title="用户登录" fontSize="12" horizontalAlign="center" verticalAlign="middle">      
        <mx:Form x="10" y="10" width="253" height="90">      
            <mx:FormItem label="用户名:">      
                <mx:TextInput id="username"/>      
            </mx:FormItem>      
            <mx:FormItem label="密  码 :">      
                <mx:TextInput id="password" displayAsPassword="true"/>      
            </mx:FormItem>      
        </mx:Form>      
        <mx:Button x="65" y="103" label="登录" click="doLogin()"/>      
        <mx:Button x="144" y="103" label="取消" click="doCancel()"/>      
    </mx:Panel>      
          
</mx:Application>     

<?xml version="1.0" encoding="utf-8"?>  
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"     
    horizontalAlign="center"     
    verticalAlign="middle"     
    verticalGap="15"   
    horizontalGap="15">   
       
    <mx:Script>   
        <![CDATA[  
            import mx.collections.ArrayCollection;  
            import mx.rpc.events.ResultEvent;  
            import com.adobe.serialization.json.JSON;   
            import mx.controls.Alert;  
              
            [Bindable]  
            private var photoFeed:ArrayCollection;  
 
            private function doLogin():void {  
                trace("start send");  
                var params:Object = new Object();  
                params.username = username.text;  
                params.password = password.text;  
                loginCheck.send(params);  
                trace("end send");  
            }  
 
            private function doCancel():void {  
                username.text = "";  
                password.text = "";  
            }  
 
            private function loginHandler(event:ResultEvent):void {  
                  
                var rawData:String = String(event.result);  
                  
                //decode the data to ActionScript using the JSON API  
                //in this case, the JSON data is a serialize Array of Objects.  
                var arr:Array = (JSON.decode(rawData) as Array);  
                var dataArray:ArrayCollection = new ArrayCollection(arr);  
                //arraySize = dataArray.length;  
                      
                // info.text = event.result.toString();  
                var obj:Object = JSON.decode(rawData);  
             
                if(obj.status==1){  
                     var request:URLRequest = new URLRequest();  
                     request.method = URLRequestMethod.GET;  
                     request.url = "http://test.ntsky.com:8080/admin/posts.action";  
                     // request.  
                     var loader:URLLoader = new URLLoader();  
                     navigateToURL(request,"_self");  
                }  
                else{  
                    Alert.show(obj.message);  
                }  
            }  
              
         ]]>  
    </mx:Script>        
       
    <mx:HTTPService id="loginCheck"   
        url="http://test.ntsky.com:8080/admin/login.action"   
        resultFormat="text"   
            
        result="loginHandler(event)" />   
  
    <mx:Panel x="330" y="192" width="290" height="177" layout="absolute" title="用户登录" fontSize="12" horizontalAlign="center" verticalAlign="middle">   
        <mx:Form x="10" y="10" width="253" height="90">   
            <mx:FormItem label="用户名:">   
                <mx:TextInput id="username"/>   
            </mx:FormItem>   
            <mx:FormItem label="密  码 :">   
                <mx:TextInput id="password" displayAsPassword="true"/>   
            </mx:FormItem>   
        </mx:Form>   
        <mx:Button x="65" y="103" label="登录" click="doLogin()"/>   
        <mx:Button x="144" y="103" label="取消" click="doCancel()"/>   
    </mx:Panel>   
       
</mx:Application>   
 

分享到:
评论

相关推荐

    java 中使用Flex的HttpService的详细配置

    然而,为了使Java服务器与Flex客户端能够顺利交互,我们需要在Java端设置一个支持AMF的服务器组件,如BlazeDS或GranitedDS。 1. **安装与配置BlazeDS** - 下载BlazeDS项目,解压并将其部署到你的Java应用服务器...

    flex4 httpservice 例子

    下面我们将详细介绍如何使用Flex4的`HTTPService`来提取XML数据: 1. **创建HTTPService实例**: 首先,我们需要在MXML文件中创建一个`HTTPService`实例,指定其URL和方法类型(GET或POST): ```xml &lt;s:...

    flex数据交互_方式

    在探讨“flex数据交互方式”这一主题时,我们首先需要理解Flex是什么以及它在数据交互中的角色。Flex是一种用于构建和部署丰富的互联网应用程序(RIA)的开源框架,由Adobe Systems开发并维护。它使用MXML(标记语言...

    Flex HTTPService如何给后台传递参数 .doc

    Flex中的HTTPService组件提供了灵活的方式与后台进行数据交互。通过URLVariables对象或`&lt;mx:request/&gt;`标签,我们可以方便地传递参数给服务器。理解这两种方法对于开发Flex应用程序并与服务器进行数据交换至关重要。...

    Flex4.0 如何通过 HttpService和WebService与服务器进行通信

    HttpService和WebService是两种常用的方式,它们允许Flex客户端与基于HTTP或Web服务接口的后端系统进行数据交换。本篇文章将深入探讨如何利用Flex 4.0中的HttpService和WebService组件与Java Struts2框架构建的...

    flex httpservice 和 java通信 获取 java端的返回值

    本文将详细介绍如何使用Flex的HTTPService组件与Java服务进行交互,并获取Java端的返回值。首先,让我们了解一下Flex和Java通信的基本原理。 Flex是一款基于ActionScript 3的开源框架,用于创建富互联网应用程序...

    Flex+HTTPService 例子

    在这个“Flex+HTTPService 例子”中,我们将探讨如何使用Flex与Java后台通过HTTPService进行数据交互。 首先,我们需要了解Flex中的HTTPService组件。HTTPService允许开发者发送HTTP请求到服务器,并接收响应数据。...

    flex httpservice实例

    在提供的代码片段中,我们看到一个简单的Flex应用程序示例,该应用使用了HTTPService组件来与后端服务进行交互。下面是对关键部分的详细分析: #### XML定义部分 ```xml ()"/&gt; &lt;mx:HTTPService id=...

    Flex与Java的交互

    总结来说,Flex 4与Java的交互提供了多种方式,可以根据实际需求选择合适的方法。RemoteObject适合于AMF通信,效率高且易于使用;HTTPService适用于RESTful API或与不支持AMF的服务器交互;而WebService则用于与符合...

    Flex+SpringMVC HttpService 发送XML数据

    本文将详细介绍如何使用Flex的HttpService组件向SpringMVC应用发送XML数据,并进行交互。 一、Flex中的HttpService组件 1. 创建HttpService:在Flex项目中,通过MXML或ActionScript可以创建HttpService实例。设置...

    FLEX _HTTPService的调用方法

    _HTTPService组件是Flex框架中非常重要的组成部分,它为开发者提供了简单易用的方式来与Web服务进行交互。通过上述两个示例,我们不仅了解了_HTTPService的基本使用方法,还学会了如何处理响应结果并将其展示在用户...

    纯flex网站前台(httpservice、webservice进行数据交互)

    WebService常用于跨系统、跨平台的数据共享,提供了标准化的数据交互方式。 4. **数据交互流程**:在Flex应用中,通常会创建一个HTTPService或WebService对象,配置其URL、方法和其他参数,然后定义一个事件监听器...

    Flex4 通过HttpService与Java进行交互项目

    这是本人做的Flex4 通过HttpService与Java进行交互项目,本人测试通过。本人在此声明运行环境为:MyEclipse 8.5,JDK 6,Tomcate 6,Flex 4. 本人已经将Flex4整合到Myeclipse 8.5中去了,所以这个项目是在MyEclipse ...

    Flex4_httpService

    综上所述,Flex4_httpService项目涵盖了Flex 4与Java Web服务交互的核心技术,包括客户端HTTPService的使用、服务端Java接口的实现以及项目配置和调试等环节。通过深入学习和实践,开发者可以熟练掌握Flex 4与后端...

    Flex与后台交互的方法_HTTPService_WebService_URLLoader

    总的来说,理解并掌握Flex与后台的交互方式对于开发高效、稳定的富互联网应用至关重要。无论选择HTTPService、WebService还是URLLoader,都需要结合实际需求,合理设计代码结构,确保良好的用户体验。

    Flex使用HttpService以键值对的形式发送请求,Java使用Servlet接收

    在开发分布式应用时,Flex和Java的交互是一个常见的需求。Flex作为前端的富互联网应用程序(RIA)框架,可以通过HTTP协议与后端服务器进行通信。在这个场景中,Flex使用`HttpService`组件向Java的Servlet发送键值对...

    flex与httpService通信(java)

    通过`HTTPService`,Flex可以与各种服务器端技术,如Java、PHP、ASP.NET等进行交互,实现数据的获取和提交。 2. **Java后台支持** 在Java环境下,通常使用Servlet、Spring MVC或者RESTful API来处理来自Flex的HTTP...

    Flex与后台交互的几种方法详解

    根据提供的标题、描述、标签及部分内容,本文将详细介绍Flex与后台进行交互的三种主要方法:通过FlashVars传递参数、利用HttpService服务以及采用URLLoader组件。这些方法在Flex开发中非常常见,对于实现数据的前后...

    flex与JAVA三种交互方式的源代码与视频教程

    本教程将深入探讨Flex与Java的三种交互方式,帮助开发者更好地理解和实现跨平台的Web应用。 1. AMF(Action Message Format)交互: AMF是Adobe提供的二进制数据格式,它能高效地传输对象,特别适合于Flex和Java...

Global site tag (gtag.js) - Google Analytics