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 - 奥义空间

 

posted @ 2009-03-30 21:06  杨子宜  阅读(658)  评论(0编辑  收藏  举报