`
demojava
  • 浏览: 553905 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flex httpService

阅读更多
这次说的URLRequest是ActionScript和服务端通信的最基本方式

要实现ActionScript与服务端交互, 首先必须知道以下几个类:
URLRequest类
记录请求服务端的URL信息, 给URLLoader进行发送操作.
   URLVariables类
保存向服务端请求所需的参数, 一般用于POST方式传输,GET方式传输不需要使用.
URLRequestMethod类
该类只有两个静态常量值, 一个是POST, 一个是GET, 可以把它当作是一个枚举类型, 用于指定URL请求时使用POST方式或是GET方式.
URLLoader类
真正与服务端打交道的类, 通过load方法把一个Reuqest发送给服务端, 在load之前必须给该对象添加一个Complete事件的监听器,接收服务器返回的信息. 传输过程中有可能产生IO错误, 有必要时可以为该对象添加IOError监听器.




例子:
var request: URLRequest = new URLRequest("http://localhost");

//默认为URLRequestMethod.GET, 若使用GET方式可以不指定
request.method = URLRequestMethod.POST;

//创建一个参数变量对象,用于保存所有向服务发送的参数数据, GET方式可以不使用
var vars: URLVariables = new URLVariables ();
vars["varName"] = varValue; //把参数键,值对放到vars对象中.
vars["var2Name"] = var2Value;
request.data = vars;  //把参数对象放进Request对象中作为参数

// 通过request对象创建一个loader,
var loader: URLLoader = new URLLoader(request);





事件及返回值的处理

loader.addEventListener( //给loader对象添加完成时的监听器.
Event.COMPLETE,
function(e: Event):void  //临时定义一个监听器
{
  //服务端返回的数据是保存在loader的data里,通过以下语句可以得到
  trace(URLLoader(e.target).data );//在监听器里处理服务端返回的数据
  //complete
  // process the data;
}
);

loader.addEventListener( //IOError监听器
IOErrorEvent.IO_ERROR,
//临时监听器,IO错误的处理在该函数中处理
function(e: IOErrorEvent): void {/* process the err;*/}
);
loader.load(request);//把request对象发送到服务端.当请求完成,则会自动触发COMPLETE事件

下面写一个具体的代码示例

mxml的具体代码
Xml代码 复制代码 收藏代码
    <?xml version="1.0" encoding="utf-8"?>  
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"    
                   xmlns:s="library://ns.adobe.com/flex/spark"    
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">  
        <fx:Script>  
            <![CDATA[  
                import mx.controls.Alert;  
                import mx.rpc.events.FaultEvent;  
                import mx.rpc.events.ResultEvent;  
                import mx.utils.URLUtil;  
                protected function myFlex_resultHandler(event:ResultEvent):void  
                {  
                    var name:String=event.result as String;  
                    Alert.show(name);  
                }  
                  
    //          protected function btnSend_clickHandler(event:MouseEvent):void  
    //          {  
    //                
    //              myFlex.sayHello(txtName.text);  
    //          }  
     
                protected function button1_clickHandler(event:MouseEvent):void  
                {  
                    var v:URLVariables = new URLVariables("name=jacky&age=35&address=HongKong China");    
                    /*   
                    也可以是这种方式  
                    var vars: URLVariables = new URLVariables ();  
                    vars["varName"] = varValue; //把参数键,值对放到vars对象中.  
                    vars["var2Name"] = var2Value;   
                    */    
                    var r:URLRequest = new URLRequest();    
                    r.url = "http://localhost:8080/Flex4BlazeDSWeb/test.do";    
                    r.method = URLRequestMethod.POST;    
                    r.data = v;    
              
                    var l:URLLoader = new URLLoader();            
                    l.load(r);    
                          
                    l.addEventListener(Event.COMPLETE,txtCompleteHandler); //注册请求完成后 响应获取数据事件方法    
                    //labMsg.alpha = 1;    
                }  
                  
                private function txtCompleteHandler(e:Event):void    
                {    
     
                    var l:URLLoader = URLLoader(e.target);    
                    /* URLUtil的stringToObject方法解释  
                    从字符串返回对象。字符串包含 name=value 对,它们成为返回对象的动态属性。这些属性对由指定的 separator 分隔。该方法可转换数字、布尔值、数组(由“[]”定义)以及子类(由“{}”定义)。默认情况下,%XX 格式的 URL 模式将转换为相应的字符串字符。   
                    例如:   
                    var s:String = "name=Alex;age=21";  
                    var o:Object = URLUtil.stringToObject(s, ";", true);          
                    返回对象:{ name: "Alex", age: 21 }。  
                    */  
                    //直接获取返回值内容:  URLLoader(e.target).data  
                    Alert.show(l.data);  
                    var o:Object = URLUtil.stringToObject(l.data,";",true); //使用URLUtil对将数据进行反序列化以方便使用    
                      
                    txtName.text = o.name;    
                    txtAge.text = o.age;    
                    txtAddress.text = o.address;    
                    //labMsg.alpha = 0;    
                }    
     
            ]]>  
        </fx:Script>  
        <fx:Declarations>  
            <!--请把不可视的组件元素例如服务的,值对象的放在声明里面  Place non-visual elements (e.g., services, value objects) here    
            <s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)"  />-->  
        </fx:Declarations>  
        <s:Panel x="77" y="35" width="198" height="231" title="www.accptecg.com flex4">  
            <s:TextInput x="47" y="102" id="txtAddress"/>  
            <s:TextInput x="47" y="72" id="txtAge"/>  
            <s:TextInput x="47" y="37" id="txtName"/>  
            <!--<s:Button x="168" y="38" label="发送" id="btnSend" click="btnSend_clickHandler(event)"/>-->  
            <s:Button x="47" y="154" label="按钮" click="button1_clickHandler(event)"/>  
            <s:Label x="0" y="47" text="Name"/>  
            <s:Label x="4" y="81" text="Age" height="13"/>  
            <s:Label x="4" y="115" text="Address" height="13"/>  
        </s:Panel>  
    </s:Application>  
 
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import mx.utils.URLUtil;
			protected function myFlex_resultHandler(event:ResultEvent):void
			{
				var name:String=event.result as String;
				Alert.show(name);
			}
			
//			protected function btnSend_clickHandler(event:MouseEvent):void
//			{
//				
//				myFlex.sayHello(txtName.text);
//			}

			protected function button1_clickHandler(event:MouseEvent):void
			{
				var v:URLVariables = new URLVariables("name=jacky&age=35&address=HongKong China");  
				/* 
				也可以是这种方式
				var vars: URLVariables = new URLVariables ();
				vars["varName"] = varValue;	//把参数键,值对放到vars对象中.
				vars["var2Name"] = var2Value; 
				*/	
				var r:URLRequest = new URLRequest();  
				r.url = "http://localhost:8080/Flex4BlazeDSWeb/test.do";  
				r.method = URLRequestMethod.POST;  
				r.data = v;  
		
				var l:URLLoader = new URLLoader();  		
				l.load(r);  
					
				l.addEventListener(Event.COMPLETE,txtCompleteHandler); //注册请求完成后 响应获取数据事件方法  
				//labMsg.alpha = 1;  
			}
			
			private function txtCompleteHandler(e:Event):void  
			{  

				var l:URLLoader = URLLoader(e.target);  
				/* URLUtil的stringToObject方法解释
				从字符串返回对象。字符串包含 name=value 对,它们成为返回对象的动态属性。这些属性对由指定的 separator 分隔。该方法可转换数字、布尔值、数组(由“[]”定义)以及子类(由“{}”定义)。默认情况下,%XX 格式的 URL 模式将转换为相应的字符串字符。 
				例如: 
				var s:String = "name=Alex;age=21";
				var o:Object = URLUtil.stringToObject(s, ";", true);		
				返回对象:{ name: "Alex", age: 21 }。
				*/
				//直接获取返回值内容:  URLLoader(e.target).data
				Alert.show(l.data);
				var o:Object = URLUtil.stringToObject(l.data,";",true); //使用URLUtil对将数据进行反序列化以方便使用  
				
				txtName.text = o.name;  
				txtAge.text = o.age;  
				txtAddress.text = o.address;  
				//labMsg.alpha = 0;  
			}  

		]]>
	</fx:Script>
	<fx:Declarations>
		<!--请把不可视的组件元素例如服务的,值对象的放在声明里面  Place non-visual elements (e.g., services, value objects) here 
		<s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)"  />-->
	</fx:Declarations>
	<s:Panel x="77" y="35" width="198" height="231" title="www.accptecg.com flex4">
		<s:TextInput x="47" y="102" id="txtAddress"/>
		<s:TextInput x="47" y="72" id="txtAge"/>
		<s:TextInput x="47" y="37" id="txtName"/>
		<!--<s:Button x="168" y="38" label="发送" id="btnSend" click="btnSend_clickHandler(event)"/>-->
		<s:Button x="47" y="154" label="按钮" click="button1_clickHandler(event)"/>
		<s:Label x="0" y="47" text="Name"/>
		<s:Label x="4" y="81" text="Age" height="13"/>
		<s:Label x="4" y="115" text="Address" height="13"/>
	</s:Panel>
</s:Application>





处理程序为
public class TestServlet extends HttpServlet {   
        public void doGet(HttpServletRequest request, HttpServletResponse response)   
                throws ServletException, IOException {   
                
           this.doPost(request, response);   
            
        }   
      
      
        public void doPost(HttpServletRequest request, HttpServletResponse response)   
                throws ServletException, IOException {   
             //获取URLResuest请求回的参数 返回数据用;分隔以方便Flex对数据进行序列化     
               String rs =new String("name="+request.getParameter("name")+";age="+request.getParameter("age")+";address="+request.getParameter("address"));   
                 System.out.println(request.getParameter("name"));   
                response.setContentType("text/plain");   
                System.out.println(rs);   
                response.getWriter().write(rs);   
           
                //request.getRequestDispatcher("/index.jsp").forward(request, response);   
        }   
      
           
    }


public class TestServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		 
	   this.doPost(request, response);
     
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		 //获取URLResuest请求回的参数 返回数据用;分隔以方便Flex对数据进行序列化  
		   String rs =new String("name="+request.getParameter("name")+";age="+request.getParameter("age")+";address="+request.getParameter("address"));
	         System.out.println(request.getParameter("name"));
	        response.setContentType("text/plain");
	        System.out.println(rs);
	        response.getWriter().write(rs);
	
	        //request.getRequestDispatcher("/index.jsp").forward(request, response);
	}

	
}



好了,这次的URLRequest方式就到此为止了

转载连接:http://javacrazyer.iteye.com/blog/702813
分享到:
评论

相关推荐

    flex HttpService 入门例子

    简单的 flex HttpService例子,可供初学者参考

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

    在Java开发中,Flex HttpService是一个强大的工具,用于在Adobe Flex客户端与服务器之间进行数据通信。这个服务允许Flex应用程序通过HTTP协议发送请求到后端服务器,并接收响应数据。本篇文章将深入探讨如何在Java...

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

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

    Flex HTTPService with ASP.NET.zip

    帶有ASP.NET的Flex HTTPService 本教程旨在演示在帶有ASP.NET的Flex 2+中HTTPService功能的使用。 Adobe Flex中有許多方法可以與ASP.NET(或簡單地說,服務器端語言)進行通信。 HttpService,WebService,WebORB...

    flex httpservice实例

    在深入探讨“Flex HTTPService实例”这一主题时,我们首先需要理解Flex框架的基本概念以及HTTPService组件在其中扮演的角色。Flex是一种用于构建跨平台的、高性能的桌面和移动应用程序的软件开发工具包(SDK),由...

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

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

    flex4 httpservice 例子

    在提供的压缩包文件中,可能包含了一个名为`demo`的示例项目,该项目展示了如何在实际应用中使用上述步骤来实现Flex4的`HTTPService`来提取XML数据。通过查看和运行这个示例,你将更深入地理解如何在Flex4中使用`...

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

    本篇文章将深入探讨如何利用Flex 4.0中的HttpService和WebService组件与Java Struts2框架构建的服务器进行通信。 首先,我们来看HttpService。HttpService是ActionScript 3.0中的一个类,用于发起HTTP请求,通常...

    Flex+HTTPService 例子

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

    Flex httpservice返回值类型和处理

    Flex中的HTTPService是Flex应用程序与后端服务器进行通信的一种方式,尤其适用于与Java服务交互。在选择使用HTTPService还是BlazeDS的Remote Object时,主要考虑的是灵活性和效率。Remote Object提供了更便捷的对象...

    flex通过httpService读取xml数据到datagird中

    flex通过httpService读取xml数据到datagird中,通过读取远程URL的XML数据(这里保存到本地),保存到ArrayCollection中,然后在将ArrayCollection绑定到datagird上 环境:flex3.0 可直接运行

    Flex HTTPService Management-开源

    它是一种优化Flex应用中HTTPService管理的方式,旨在减少重复代码并简化多连接的处理。通过动态链接库,开发者可以创建一个中心化的服务管理器,这个管理器负责处理所有的HTTP请求,而不是为每一个请求创建一个新的...

    自创Flex入门教程

    4. **Flex前端开发**:使用FlexHttpService组件从服务器端获取XML数据,并使用e4x进行数据绑定和显示。 #### 四、开发之前的准备工作 ##### 1. 设置XMLBean的环境变量 - 首先需要安装Java环境,并设置JAVA_HOME...

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

    在这个场景中,Flex使用`HttpService`组件向Java的Servlet发送键值对形式的数据,而Servlet负责处理这些请求并返回响应数据。下面将详细介绍这一过程。 首先,Flex中的`HttpService`是ActionScript 3(AS3)的一个...

    FLEX _HTTPService的调用方法

    根据提供的文件信息,我们可以深入探讨FLEX中的_HTTPService组件及其使用方法。此组件主要用于与Web服务进行通信,例如从服务器获取或发送数据。下面将详细解释如何使用_HTTPService组件,并通过示例代码来展示其...

    Flex+SpringMVC HttpService 发送XML数据

    1. 创建HttpService:在Flex项目中,通过MXML或ActionScript可以创建HttpService实例。设置URL属性为SpringMVC的Controller处理路径,method属性为POST或GET,表明请求类型。 2. 设置XML数据:使用XML类创建XML对象...

    flex与httpService通信(java)

    在Flex中,`HTTPService`组件是用于与服务器进行数据交换的重要工具,特别是对于与Java后台进行通信时。本篇文章将深入探讨Flex与Java后台通过`HTTPService`通信的原理、配置和实践。 1. **HTTPService组件介绍** ...

    Flex4_httpService

    这个项目展示了如何通过HTTPService组件在Flex应用中实现远程调用Java服务,以完成数据的交换和处理。Flex 4是Adobe AIR和Flash Player支持的ActionScript 3.0开发框架,它提供了一个强大的UI组件库和数据绑定机制,...

    flex 解析xml文件 httpservice

    本篇文章将深入探讨如何使用Flex解析XML文件,并通过HTTPService来读取XML内容,以及如何根据需求过滤字符串并获取所需值。 首先,让我们了解Flex中的XML类。XML类是ActionScript 3.0中用于处理XML文档的主要工具,...

Global site tag (gtag.js) - Google Analytics