Flex與asp.net的WebService通訊

來源:互聯網
上載者:User
asp.net|web

  本篇隨筆主要是關於Flex與asp.net的WebService通訊,其中利用了SoapHeader。(如果你對SoapHeader不瞭解,可以參考WebService開發(一) 如何使用Soap頭)。由此可見WebService在跨平台方面的優勢。

  ASP.NET的WebService代碼

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://davidfan.cnblogs.com")]//名稱空間應該和Flex中定義相同
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public ValidateSoapHeader header;
    [WebMethod]
    [SoapHeader("header")]
    public string HelloWorld()
    {
        if (header == null)
        {
            return "請提供驗證資訊.";
        }
        else
        {
            if (header.Name == "admin" && header.Password == "admin")
            {
                if (header.ExDate < DateTime.Now)
                {
                    return "帳號到期";
                }
                else
                {
                    return "驗證成功";
                }
            }
            else
            {
                return "使用者名稱或密碼錯誤";
            }
        }
    }

}

/**//// <summary>
/// 繼承自SoapHeader的自訂類
/// </summary>
public class ValidateSoapHeader : System.Web.Services.Protocols.SoapHeader
{
    public ValidateSoapHeader()
    {
    }
    public ValidateSoapHeader(string name, string password, DateTime dt)
    {
        this.name = name;
        this.password = password;
        this.exDate = dt;
    }

    private string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private string password;
    public string Password
    {
        get { return password; }
        set { password = value; }
    }

    private DateTime exDate;
    public DateTime ExDate
    {
        get { return exDate; }
        set { exDate = value; }
    }
}

  Flex的mxml、as代碼

  mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontFamily="simsun" fontSize="12">
<mx:Script>
<![CDATA[
    import WebServiceUtility.Info;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.soap.SOAPHeader;
   
    private function SendRequest():void
    {
        var content:Info = new Info();
        content.Name = UserName.text;
        content.Password = PassWord.text;
        content.ExDate = new Date(2010, 3, 10);
        //關鍵在QName的建構函式
        //第一個參數要和.Net的WebService的名稱空間相同
        //第二個參數要和.Net的WebService的繼承自SoapHeader的自訂類名稱相同
        var qname:QName = new QName("http://davidfan.cnblogs.com","ValidateSoapHeader");
        var header:SOAPHeader = new SOAPHeader(qname,content);
       
        ws.clearHeaders();
        ws.addHeader(header);
        ws.HelloWorld();
    }
    private function OnResult(event:ResultEvent):void{
            Result.text= event.result.toString();
    }
    private function OnFault(event:FaultEvent):void{
            Result.text= event.message.toString();
    }
]]>
</mx:Script>
<mx:WebService id="ws" wsdl="http://localhost:9200/WebSite2/Service.asmx?WSDL"
result="OnResult(event)" fault="OnFault(event)"/>
<mx:TextInput id="UserName" x="98" y="94"/>
<mx:TextInput id="PassWord" x="98" y="124"/>
<mx:Label x="29" y="98" text="使用者名稱:"/>
<mx:Label x="29" y="128" text="密 碼:"/>
<mx:Button x="98" y="184" label="調用" click="SendRequest()"/>
<mx:Label x="29" y="156" text="結 果:"/>
<mx:TextInput id="Result" x="98" y="154"/>
</mx:Application>

  as

package WebServiceUtility
{
        public class Info{
            //該類名稱可以和.Net中的ValidateSoapHeader不同
            //但欄位要對應拼字相同
            public var Name:String;
            public var Password:String;
            public var ExDate:Date;
        }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.