转自:http://dev.yesky.com/265/3418765.shtml
本篇随笔主要是关于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 /> </mx:Application>
|
as
以下是引用片段: package WebServiceUtility { public class Info{ //该类名称可以和.Net中的ValidateSoapHeader不同 //但字段要对应拼写相同 public var Name:String; public var Password:String; public var ExDate:Date; } }
|
|
请发表评论