Flex HTTPService 与 ASP.NET






4.44/5 (9投票s)
一个关于 Flex 和 ASP.NET 的 HTTPService 入门教程

引言
本教程演示在 Flex 2+ 中使用 HTTPService 特性与 ASP.NET 进行通信。在 Adobe Flex 中有很多方法可以与 ASP.NET (或简单的服务器端语言) 进行通信。例如 HttpService、WebService、WebORB、FluorineFx 等。在本教程中,我只专注于 HTTPService。
<mx:HTTPService />
附件中的示例演示了如何向 ASP.NET 发送和接收数据。请记住,HTTPService 仅适用于处理少量数据。我们将从 Flex 应用程序传递请求作为参数,并以 XML 格式发送回请求的数据。
ASP.NET 在 HTTPService 中的作用
HTTPService 可以处理 XML、文本和更多类型的数据。我们将使用 XML 作为示例应用程序。ASP.NET 应用程序将根据 Flex 应用程序的请求生成数据。以下是我用于以 XML 格式生成数据的典型方法
private void GetAll()
{
SqlDataAdapter da = new SqlDataAdapter
("SELECT id, name, email FROM test", con);
// Bad code. 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>
由于 Flex 可以为不同的目的发送任意数量的请求,因此我使用一个switch
检查,例如
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;
}
这就是关于 ASP.NET 的全部内容。现在是 Flex 部分。您知道 Flex 更专注于 UI。
Flex 的作用
核心是 HTTPService。您需要像这样使用它
<mx:HTTPService id="hsData" url="https:///flextest/Default.aspx"
fault="httpFaultHandler(event)"
result="httpResultHandler(event)"
method="POST"
/>
请查看文档以了解它支持的不同属性。我只使用了示例应用程序所需的内容。现在,我们可以使用它的 send
方法来从 ASP.NET 请求数据。httpservice.send()
是我们将要执行此操作的方式。如果我们需要发送参数,我们将需要使用一个 Flex object
来实现。请参阅示例
private function PopulateDataGridAll(event:MouseEvent):void {
var params:Object = {};
params["call"] = "GetAll";
hsData.send(params);
}
请注意,params
是我用来存储参数并发送到服务器的对象。在 send()
方法之后,数据将返回到 Flex 应用程序,我们将在 Flex DataGrid
中填充数据。DataGrid
组件代码如下所示
<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>
好吧,列的详细信息不是必需的。如果您不使用它,它将显示所有列。(记住 ASP.NET 的 AutoGenerateColumns
功能)。
在上面的代码中,dataProvider
属性使用 hsData.lastResult.parent.child
,其中 parent 和 child 是 XML 输入的节点。查看本文顶部提供的 ASP.NET 示例 XML 输出,以获得更多理解。
如果运行该应用程序,您将看到类似于所提供屏幕截图的应用程序。为了演示 Flex-ASP.NET 通信,我添加了以下提到的功能
- 从服务器获取所有记录 (ASP.NET 方法:
GetAll()
) 并在DataGrid
中显示 - 从服务器获取一条记录 (ASP.NET 方法:
GetDataById()
) 并在DataGrid
中显示 - 将一条记录 (ASP.NET 方法:
SaveData()
) 放到服务器并在DataGrid
中显示
历史
- 2009 年 6 月 11 日:首次发布