65.9K
CodeProject 正在变化。 阅读更多。
Home

Flex HTTPService 与 ASP.NET

2009年6月11日

CPOL

2分钟阅读

viewsIcon

54019

downloadIcon

872

一个关于 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 日:首次发布
© . All rights reserved.