Flex中调用C#.NET里的WebService方法

2009年4月25日星期六

Flex中调用C#.NET里的WebService方法



首先在VS里新建一个WebService,默认情况下它已经给出了一个HelloWorld方法。


[原创]Flex中调用C.NET里的WebService方法 - Eule - 奥义空间


【C#中的代码如下】:


using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Data;

using System.Data.SqlClient;

[WebService(Namespace = http://tempuri.org/)]       //默认情况下的命名空间,只用于开发阶段,实际发布是最好更改

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService

{

    public Service () { }             //默认生成的一个HelloWorld()方法


    [WebMethod]

    public string HelloWorld() {

        return "Hello World";

    }


    [WebMethod]

    public string getConnection(string sql)       //自定义一个WebService方法,模拟登陆

    {

        SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=HappyHome; uid=sa; pwd=sa");

        SqlDataAdapter da = new SqlDataAdapter(sql, conn);

        DataSet ds = new DataSet();

        da.Fill(ds);

        return ds.GetXml();

    }

}


[原创]Flex中调用C.NET里的WebService方法 - Eule - 奥义空间



【Flex中的代码如下】:


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>

 <![CDATA[

  import mx.rpc.events.ResultEvent;

  import mx.controls.Alert;

  

  [Bindable]public var getresultXML:XML=new XML();       //定义一个全局变量用来接收WebService返回的XML数据

  public var islogin:Boolean=new Boolean(false);    //定义一个boolean类型的变量来判断是否登陆成功!

  

  private function btnReset_Click():void          //“重置”按钮点击事件,清空文本框  {

   this.txtUserName.text="";

   this.txtUserPwd.text="";

  }

  private function btnLogin_Click():void        //"登陆"按钮点击事件

  {

   if(this.txtUserName.text=="" || this.txtUserPwd.text=="")

   {

    Alert.show("用户名和密码不能为空!");

    return; 

   }

   else

   {


    //把文本框里输入的信息封装到SQL语句中,并作为参数传到WebService方法里。

    var strLoginSQL:String="select * from Users where Email='"+this.txtUserName.text+"' and LoginPwd='"+this.txtUserPwd.text+"'";


    //调用WebService里自定义的方法getConnection(string sql)方法

    this.WebServiceTest.getConnection(strLoginSQL);

   }

  }

  

  private function onResult(event:ResultEvent):void

  {

   getresultXML=XML(event.result);

   if(getresultXML.toString().length>0)

   {

    var strNickName:String=XML(event.result.toString()).Table.NickName.toString();

    this.islogin=true;

    Alert.show("登陆成功!欢迎您"+strNickName);

   }

   else

   {

    Alert.show("没有查到此用户!登陆失败!");

    return;

   }

  }

 ]]>

</mx:Script>


//定义一个WebService组件,


//自定义一个id,以便在方法中引用。


//Wsdl是WebService的地址,可以直接在VS里运行WebService,在浏览器里的地址就是了。


//useProxy  是否使用代理服务器


// fault   当出错时触发的方法


// result  当成功时监听的方法

<mx:WebService id="WebServiceTest"


  wsdl="http://localhost:1427/TestWebService/Service.asmx?WSDL"

  useProxy="false"

  fault="Alert.show(event.fault.faultString),'出错了'"

  result="onResult(event)">

 <mx:operation name="HelloWorld"/>             // 可以把默认的HelloWorld引入,只是作为测试

 <mx:operation name="getConnection"/>       //引入真正要调用的方法

</mx:WebService>

 <mx:Panel x="201.5" y="104" width="293" height="189" layout="absolute" id="loginPanal" title="登陆面板" status="Design By Eule">

  <mx:Label x="18" y="24" text="邮件地址:" fontSize="12"/>

  <mx:Label x="18" y="50" text="登陆密码:" fontSize="12"/>

  <mx:TextInput x="91" y="24" id="txtUserName"/>

  <mx:TextInput x="91" y="50" id="txtUserPwd"/>

  <mx:Button x="91" y="80" label="登陆" id="btnLogin" click="btnLogin_Click()"/>

  <mx:Button x="147" y="80" label="重置" id="btnReset" click="btnReset_Click()"/>

 </mx:Panel>

</mx:Application>


[原创]Flex中调用C.NET里的WebService方法 - Eule - 奥义空间


[原创]Flex中调用C.NET里的WebService方法 - Eule - 奥义空间


[原创]Flex中调用C.NET里的WebService方法 - Eule - 奥义空间


 




0 评论:

发表评论