Flex与C#的一般处理程序(ashx)通信 一般处理程序应用线程

分类:Flash_Flex_AIR| 发布:camnprbubuol| 查看: | 发表时间:2012/4/23

Flex代码:

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"   
  3.     backgroundColor="0x414141">   
  4.          
  5. <!--上面preload属性与下面外部CSS可以删除它  
  6.  preloader="com.preload.PreLoad"  
  7. <mx:Style source="yfskin/yflexskin.css"/>  
  8. -->    
  9.    
  10.     
  11. <mx:Script>   
  12.    <![CDATA[  
  13.     import mx.collections.ArrayCollection;  
  14.     import flash.events.Event;  
  15.     import mx.rpc.events.ResultEvent;  
  16.     import mx.controls.Alert; 
  17.     import mx.events.CloseEvent; 
  18.     import com.adobe.serialization.json.JSON;  
  19.     
  20.     private function personJSON(event:ResultEvent):void  
  21.     {  
  22.         //get the raw JSON data and cast to String  
  23.          
  24.         var rawData:String = String(event.result);  
  25.         //showMsg(rawData); 
  26.         var person = JSON.decode(rawData);  
  27.          
  28.         txtName.text = person.data[0].name;  
  29.         txtGx.text = person.data[0].sex;  
  30.         txtAddress.text = person.data[0].age;  
  31.         txtNiceName.text = person.data[0].email; 
  32.         txtEmployees.text = "不是";  
  33.  
  34.         var persons:Array = person.data as Array;  
  35.         var personsCollection:ArrayCollection = new ArrayCollection(persons);  
  36.         dg.dataProvider = personsCollection;   
  37.     }  
  38.      
  39.     private function showMsg(obj:String):void 
  40.     { 
  41.          var alert:Alert = Alert.show( 
  42.                 obj,"Alert Window Title", 
  43.                 Alert.OK|Alert.CANCEL|Alert.NO|Alert.YES, 
  44.                 this); 
  45.     } 
  46.     
  47.     private function managerJSON(event:ResultEvent):void  
  48.     {  
  49.           
  50.         //获取原始JSON数据并输出到InputText控件上  
  51.         var rawData:String = String(event.result);  
  52.         var alert:Alert = Alert.show( 
  53.                 rawData,"Alert Window Title", 
  54.                 Alert.OK|Alert.CANCEL|Alert.NO|Alert.YES, 
  55.                 this); 
  56.         var manager = JSON.decode(rawData);  
  57.         txtName.text = manager.txt_name;  
  58.         txtGx.text = manager.txt_gx;  
  59.         txtAddress.text = manager.address;  
  60.         txtNiceName.text = manager.nice_name;  
  61.         txtEmployees.text = "是";  
  62.       
  63.         //更新DataGrid  
  64.         var employees:Array = manager.employees as Array;  
  65.         var employeesCollection:ArrayCollection = new ArrayCollection(employees);  
  66.         dg.dataProvider = employeesCollection;  
  67.      }  
  68.      
  69.     private function onSelected():void  
  70.     {  
  71.         txtName.text = dg.selectedItem.txt_name;  
  72.         txtGx.text = dg.selectedItem.txt_gx;  
  73.         txtAddress.text = dg.selectedItem.address;  
  74.         txtNiceName.text = "";  
  75.         txtEmployees.text = "";  
  76.     }  
  77.    ]]>   
  78.  </mx:Script>   
  79.   <mx:HTTPService id="personRequest" url="http://localhost:5401/WebFlex/HandlerFlex.ashx"   
  80.     showBusyCursor="true" useProxy="false" method="GET" resultFormat="text"    
  81.     result="personJSON(event)" >   
  82.     <mx:request xmlns="">   
  83.       <data>"true"</data>  
  84.     </mx:request>   
  85.   </mx:HTTPService>   
  86.   <mx:HTTPService id="managerRequest" url="http://localhost:5401/WebFlex/HandlerFlex.ashx"    
  87.     showBusyCursor="true" useProxy="false" method="GET" resultFormat="text"    
  88.     result="managerJSON(event)">   
  89.     <mx:request xmlns="">   
  90.       <getManager>"true"</getManager>   
  91.     </mx:request>   
  92.   </mx:HTTPService>   
  93.     
  94.   <mx:Panel x="0" y="0" width="730" height="240"    
  95.      layout="absolute" title="JSON 数据源实例">   
  96.     <mx:DataGrid id="dg" x="210" y="10" width="505" rowCount="5"   
  97.         rowHeight="25" enabled="true" editable="false" change="onSelected()">    
  98.       <mx:columns>   
  99.         <mx:DataGridColumn headerText="姓名" dataField="name"/>   
  100.         <mx:DataGridColumn headerText="性别" dataField="sex"/>   
  101.         <mx:DataGridColumn headerText="年龄" dataField="age"/>   
  102.         <mx:DataGridColumn headerText="邮箱" dataField="email"/>   
  103.       </mx:columns>   
  104.     </mx:DataGrid>   
  105.       
  106.     <mx:Label x="10" y="12" text="姓名:"/>   
  107.     <mx:TextInput id="txtName" x="50" y="11" width="150" editable="false"/>   
  108.     <mx:Label x="10" y="41" text="关系:"/>   
  109.     <mx:TextInput id="txtGx" x="50" y="40" width="150" editable="false"/>   
  110.     <mx:Label x="10" y="74" text="住址:"/>   
  111.     <mx:TextInput id="txtAddress" x="50" y="72" width="150" editable="false"/>   
  112.     <mx:Label x="10" y="105" text="昵称:"/>   
  113.     <mx:TextInput id="txtNiceName" x="50" y="103" width="150" editable="false"/>   
  114.     <mx:Label x="10" y="136" text="屋主:"/>   
  115.     <mx:TextInput id="txtEmployees" x="50" y="134" width="150"    
  116.         editable="false" text="不是"/>   
  117.       
  118.     <mx:Button id="getPerson" x="270" y="165" label="侄女"    
  119.        click="personRequest.send();"/>   
  120.     <mx:Button id="getManager" x="380" y="165" label="我的家族"    
  121.        click="managerRequest.send();"/>   
  122.       
  123.   </mx:Panel>   
  124. </mx:Application>  

 

 

C#代码:

  1. <%@ WebHandler Language="C#" Class="HandlerFlex" %>  
  2.   
  3. using System;  
  4. using System.Web;  
  5. using System.Net;  
  6. using System.Text;  
  7. using System.Threading;  
  8.   
  9. public class HandlerFlex : IHttpHandler {  
  10.   
  11.     private HttpContext con;  
  12.       
  13.     public void ProcessRequest (HttpContext context) {  
  14.         context.Response.ContentType = "text/plain";  
  15.         //context.Response.Write("Hello World");  
  16.         con = context;  
  17.         this.Start();  
  18.     }  
  19.   
  20.     public void Start()  
  21.     {  
  22.         Thread t = new Thread(new ThreadStart(ListenRequest));  
  23.         t.Start();  
  24.     }  
  25.   
  26.     private void ListenRequest()  
  27.     {  
  28.         HttpResponse response = con.Response;  
  29.         string msg = this.getJsonData();  
  30.   
  31.         con.Response.Write(msg);  
  32.     }  
  33.   
  34.     private string getJsonData()  
  35.     {  
  36.         StringBuilder jsonData = new StringBuilder();  
  37.         jsonData.Append("{\"data\":[{\"name\":\"谢刚\",\"sex\":\"男\",\"age\":\"21\",\"email\":\"xiegangthrille@126.com\"}]}");  
  38.         //jsonData.Append("{\"nice_name\":\"\u963f\u5065\",\"employees\":[{\"txt_name\":\"\u963f\u96ea\",\"txt_gx\":\"\u8001\u5a46\",\"email\":\"xuelove520@21cn.com\",\"address\":\"\u5e7f\u4e1c\u8087\u5e86\u5e7f\u5b81\u8c2d\u5e03\u6c34\u58f0\u5cad\"},{\"txt_name\":\"\u5b87B\",\"txt_gx\":\"\u513f\u5b50\",\"email\":\"0758yu@163.com\",\"address\":\"\u5730\u7403\u4e9a\u6d32\u4e2d\u56fd\u5e7f\u4e1c\u8087\u5e86\u5e7f\u5b81\u5357\u8857\"}],\"txt_name\":\"\u6b27\u5b97\u5065\",\"txt_gx\":\"\u67f1\u4eba\",\"email\":\"0758jian@163.com\",\"address\":\"\u592a\u9633\u7cfb\u7ecf\u706b\u661f\u5230\u5730\u7403\"}");  
  39.         return jsonData.ToString();  
  40.     }  
  41.       
  42.     public void RespClient(HttpListenerResponse response, string msg)  
  43.     {  
  44.         try  
  45.         {  
  46.             byte[] buffer = Encoding.UTF8.GetBytes(msg);  
  47.             response.ContentType = @"text/xml";  
  48.             response.ContentLength64 = buffer.Length;  
  49.             System.IO.Stream output = response.OutputStream;  
  50.             output.Write(buffer, 0, buffer.Length);  
  51.             output.Close();  
  52.         }  
  53.         catch (Exception e)  
  54.         {  
  55.               
  56.         }  
  57.     }  
  58.    
  59.     public bool IsReusable {  
  60.         get {  
  61.             return false;  
  62.         }  
  63.     }  
  64.   
  65. }  

 

 flex工程需要用到的库:https://github.com/mikechambers/as3corelib

来源:http://xiegangthrille.iteye.com/blog/431339

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/archives/555.html