Flex与Dotnet 之 WebService

本篇随笔主要是关于Flex与asp.net的WebService通讯,其中利用了SoapHeader。(如果你对SoapHeader不了解主看我以前的一篇随笔WebService开发(一) 如何使用Soap头)。由此可见WebService在跨平台方面的优势。
ASP.NET的WebService代码

None.gif using  System;
None.gif
using  System.Web;
None.gif
using  System.Web.Services;
None.gif
using  System.Web.Services.Protocols;
None.gif
None.gif[WebService(Namespace 
=   " http://davidfan.cnblogs.com " )] // 名称空间应该和Flex中定义相同
None.gif
[WebServiceBinding(ConformsTo  =  WsiProfiles.BasicProfile1_1)]
None.gif
public   class  Service : System.Web.Services.WebService
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public ValidateSoapHeader header;
InBlock.gif    [WebMethod]
InBlock.gif    [SoapHeader(
"header")]
InBlock.gif    
public string HelloWorld()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (header == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return "请提供验证信息.";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (header.Name == "admin" && header.Password == "admin")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if (header.ExDate < DateTime.Now)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
return "帐号过期";
ExpandedSubBlockEnd.gif                }

InBlock.gif                
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
return "验证成功";
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return "用户名或密码错误";
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ /// <summary>
InBlock.gif
/// 继承自SoapHeader的自定义类
ExpandedBlockEnd.gif
/// </summary>

None.gif public   class  ValidateSoapHeader : System.Web.Services.Protocols.SoapHeader
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public ValidateSoapHeader()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public ValidateSoapHeader(string name, string password, DateTime dt)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.name = name;
InBlock.gif        
this.password = password;
InBlock.gif        
this.exDate = dt;
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
private string name;
InBlock.gif    
public string Name
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn name; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ name = value; }
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
private string password;
InBlock.gif    
public string Password
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn password; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ password = value; }
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
private DateTime exDate;
InBlock.gif    
public DateTime ExDate
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn exDate; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ exDate = value; }
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

Flex的mxml、as代码
mxml
None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="absolute"  fontFamily ="simsun"  fontSize ="12" >
None.gif
< mx:Script >
None.gif
<! [CDATA[
None.gif    import WebServiceUtility.Info;
None.gif    import mx.rpc.events.FaultEvent;
None.gif    import mx.rpc.events.ResultEvent;
None.gif    import mx.rpc.soap.SOAPHeader;
None.gif    
None.gif    private function SendRequest():void
None.gif    {
None.gif        var content:Info = new Info();
None.gif        content.Name = UserName.text;
None.gif        content.Password = PassWord.text;
None.gif        content.ExDate = new Date(2010, 3, 10);
None.gif        //关键在QName的构造函数
None.gif        //第一个参数要和.Net的WebService的名称空间相同
None.gif        //第二个参数要和.Net的WebService的继承自SoapHeader的自定义类名称相同
None.gif        var qname:QName = new QName("http://davidfan.cnblogs.com","ValidateSoapHeader");
None.gif        var header:SOAPHeader = new SOAPHeader(qname,content);
None.gif        
None.gif        ws.clearHeaders();
None.gif        ws.addHeader(header);
None.gif        ws.HelloWorld();
None.gif    }
None.gif    private function OnResult(event:ResultEvent):void{
None.gif            Result.text= event.result.toString();
None.gif    }
None.gif    private function OnFault(event:FaultEvent):void{
None.gif            Result.text= event.message.toString();
None.gif    }
None.gif]]
>
None.gif
</ mx:Script >
None.gif
< mx:WebService  id ="ws"  wsdl ="http://localhost:9200/WebSite2/Service.asmx?WSDL"
None.gifresult
="OnResult(event)"  fault ="OnFault(event)" />
None.gif
< mx:TextInput  id ="UserName"  x ="98"  y ="94" />
None.gif
< mx:TextInput  id ="PassWord"  x ="98"  y ="124" />
None.gif
< mx:Label  x ="29"  y ="98"  text ="用户名:" />
None.gif
< mx:Label  x ="29"  y ="128"  text ="密 码:" />
None.gif
< mx:Button  x ="98"  y ="184"  label ="调用"  click ="SendRequest()" />
None.gif
< mx:Label  x ="29"  y ="156"  text ="结 果:" />
None.gif
< mx:TextInput  id ="Result"  x ="98"  y ="154" />
None.gif
</ mx:Application >  
as
None.gif package  WebServiceUtility
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif        
public class Infodot.gif{
InBlock.gif            
//该类名称可以和.Net中的ValidateSoapHeader不同
InBlock.gif            
//但字段要对应拼写相同
InBlock.gif
            public var Name:String;
InBlock.gif            
public var Password:String;
InBlock.gif            
public var ExDate:Date;
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif}

转载于:https://www.cnblogs.com/DavidFan/archive/2007/07/04/805164.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值