Flex与asp.net通过HttpService通信示例

1.HttpService,实际上就是传统的网站,通过get和post的方法传递数据或网页环境变量传递数据。

2.flex的HttpService组件,封装了了处理httpservice的一系列处理方法事件等。

示例(与web页交互)

1.asp.net web代码(VS2008)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    private String conStr=System.Configuration.ConfigurationManager.ConnectionStrings["FlexdemoConnectionString"].ConnectionString.ToString();
    protected void Page_Load(object sender, EventArgs e)
    {
        /*
         if (Request.QueryString["username"].Equals("chu888"))
         {
            Response.Write("<Result>");
            Response.Write("<chu888>ok</chu888>");
            Response.Write("</Result>");
         }
        else
        {
            Response.Write("<Result>");
            Response.Write("<chu888>error</chu888>");
            Response.Write("</Result>");
        } */
        if (Request["call"] != null)
        {
            switch (Request["call"])
            {
                case "GetDataById":
                    GetDataById(int.Parse(Request["id"]));
                    break;
                case "GetAll":
                    GetAll();
                    break;
                case "SaveData":
                    SaveData(Request["name"], Request["email"]);
                    break;
                case "AnotherMethod":
                    // your method call
                    break;
            }
        }

    }
    private void GetAll()
    {
        SqlDataAdapter da = new SqlDataAdapter("SELECT id, name, email FROM test", conStr);
        // Bad code. Possible SQL injection. Just for demo purpose
        DataSet ds = new DataSet();
        da.Fill(ds);
        ds.DataSetName = "parent";
        ds.Tables[0].TableName = "child";

        // Output data in XML format
        Response.Write("<?xml version=/"1.0/" encoding=/"utf-8/"?>");

        Response.Write(ds.GetXml());

      /*********输出格式*******************

      <?xml version="1.0" encoding="utf-8"?>
<parent>
  <child>
    <id>2</id>
    <name>Praveen.V.Nair</name>
    <email>ninethsense@hotmail.com</email>
  </child>
</parent>

****************************/
    }

    private void GetDataById(int id)
    {
        SqlDataAdapter da = new SqlDataAdapter("SELECT id, name, email FROM test WHERE id=" + id.ToString(), conStr);
        // Bad code. Possible SQL injection. Just for demo purpose
        DataSet ds = new DataSet();
        da.Fill(ds);
        ds.DataSetName = "parent";
        ds.Tables[0].TableName = "child";

        // Output data in XML format
        Response.Write("<?xml version=/"1.0/" encoding=/"utf-8/"?>");
        Response.Write(ds.GetXml());
    }

    private void SaveData(string name, string email)
    {
        string cmdtext = "INSERT INTO test (name, email) VALUES ('" + name + "','" + email + "');";
        // Bad code. Possible SQL injection. Just for demo purpose
        SqlConnection conn = new SqlConnection(conStr);
        conn.Open();
        SqlCommand cmd = new SqlCommand(cmdtext, conn);
        cmd.ExecuteNonQuery();
        conn.Close();
    }


   
}

 

 

2.flex代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="horizontal"
 backgroundColor="#FFFFFF"
 creationComplete="init()" >
 
 <mx:Script>
  <![CDATA[
   import mx.rpc.events.FaultEvent;
   import mx.controls.Alert;
   import mx.rpc.events.ResultEvent;
   
   private function init():void{
    // Initialize if you have something
   }
   
   private function httpFaultHandler(event:FaultEvent):void{
    // If you want to something
    Alert.show("There was a problem","Error");
   }
   
   private function httpResultHandler(event:ResultEvent):void{
    // If you want to something  
   }
   private function PopulateDataGridById(event:MouseEvent):void {
    var params:Object = {};
    params["call"] = "GetDataById";
    params["id"] = txtID.text;
    hsData.send(params);
   }
   private function PopulateDataGridAll(event:MouseEvent):void {
    Alert.show("demo");
    var params:Object = {};
    params["call"] = "GetAll";
    hsData.send(params);
   }
   
   private function SaveData(event:MouseEvent):void {
    // Send data to server
    var params:Object = {};
    params["call"] = "SaveData";
    params["name"] = txtName.text;
    params["email"] = txtEmail.text;
    hsData.send(params);
    
    // reload datagrid
    params = new Object();
    params["call"] = "GetAll";
    hsData.send(params);
   }

  ]]>
 </mx:Script>
 
 <mx:HTTPService id="hsData" url="http://localhost/WebHost/Default.aspx"
  fault="httpFaultHandler(event)"
  result="httpResultHandler(event)"
  method="POST"
  />

 <mx:DataGrid id="dg" dataProvider="{hsData.lastResult.parent.child}">
    <mx:columns>
            <mx:DataGridColumn headerText="ID" dataField="id"/>
            <mx:DataGridColumn headerText="Name" dataField="name"/>
            <mx:DataGridColumn headerText="EMail" dataField="email"/>
        </mx:columns>
 </mx:DataGrid>
 <mx:Form >
 <mx:HBox>
   <mx:Panel width="250" height="86" layout="absolute" title="Get all records">
    <mx:FormItem x="35.5" y="10">
     <mx:Button label="Get method: GetAll()" click="PopulateDataGridAll(event)"/>
    </mx:FormItem>
   </mx:Panel>
   <mx:Panel width="250" height="92" layout="absolute" title="Get record by id">
    <mx:FormItem label="Label" x="10" y="0">
     <mx:TextInput id="txtID"/>
    </mx:FormItem>
    <mx:FormItem x="10" y="28">
     <mx:Button label="Get method: GetDataById()" click="PopulateDataGridById(event)"/>
    </mx:FormItem>
   </mx:Panel>
   <mx:Panel width="250" height="145" layout="absolute" title="Put a new record">
     <mx:FormItem label="Name"  x="11" y="10">
       <mx:TextInput id="txtName" />
     </mx:FormItem>
     <mx:FormItem label="Email" x="10" y="40">
       <mx:TextInput id="txtEmail"/>
     </mx:FormItem>
     <mx:FormItem x="10" y="70">
      <mx:Button label="Put method: SaveData()" click="SaveData(event)"/>
     </mx:FormItem>
   </mx:Panel>
  </mx:HBox>
 </mx:Form>
 
</mx:Application>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值