您的位置:首页 > 理论基础 > 计算机网络

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

2010-12-24 00:08 441 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐