Flex与asp.net的WebService通讯

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;
        }
}

时间: 2024-12-31 09:03:15

Flex与asp.net的WebService通讯的相关文章

在VB6或ASP中调用webservice

web VB6或ASP中调用webservice Web Services技术使异种计算环境之间可以共享数据和通信,达到信息的一致性.我们可以利用 HTTP POST/GET协议.SOAP协议来调用Web Services. 一. 利用SOAP协议在VB6中调用Web Services ; 首先利用.net发布一个简单的Web Services <WebMethod()> _ Public Function getString(ByVal str As String) As String Re

EXT调用ASP.NET AJAX WebService

在asp.net ajax中,使客户端调用WebService变得非常的简单,而且非常有用(个人觉得这个功能是asp.net ajax的核心,很多与客户端的交互都需要个功能来辅助实现).那在EXT中,标准的客户端与服务器端交互,使用的是自定义的HttpHandler,而且服务器在处理客户端提交的参数也都必须是弱类型的使用方式,也会使用带一定的不便.如果你曾经使用过Asp.net ajax调用WebService,那你肯定非常希望EXT也能像那样简单的调用WebService. 默认情况下,EXT

asp.net中webservice请求发送原理和过程的初步分析

需求:作为服务方,需要监控每个调用webservice的客户端.需要监控的信息大致如下:客户端的ip,客户端调用了哪个类的哪个方法. 于是自己花了点时间对asp.net的webservice机制作了一下探索. 解决方案: 在接口项目中编写一个所有webservice接口的基类,在此基类的构造方法中,通过分析HttpContext.Current.Request得到想要的信息. 1.ip可以通过HttpContext.Current.Request.UserHostAddress得到 2.调用发哪

ASP.NET使用WebService实现天气预报功能_实用技巧

本文使用Asp.Net (C#)调用互联网上公开的WebServices(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)来实现天气预报,该天气预报 Web 服务,数据来源于中国气象局http://www.cma.gov.cn/,数据每2.5小时左右自动更新一次,准确可靠.包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据. 效果图 : 步骤 : 1 .新建web 项目,添加窗体. 2 . 引用右键

使用ASP.NET开发移动通讯的几种方法

asp.net 现在的消费者不仅仅要求通过个人电脑访问互联网上的资源,他们还需要通过别的方式来访问,网站的设计者对此感到很苦恼.他们的第一个本能的反映是通过一个现有的Web网站来创建多个导航路径.很多Web开发者使用这种机制来解决不同版本的浏览器对HTML规范的支持程度不一样的问题(例如有的版本的浏览器能支持FRAME,有的却不能支持).尽管这种方式比较容易实现,但是由于不同的设备需要不同的网页显示方式,所以Web站点的页面会随着访问设备的增加而呈现指数的增长,这将会使网站的维护和管理变得很复杂

asp.net中WebService属性记录

  1 webservice 属性 [webservice(description="ddddd"),namespace="http://`````",Name="webservice的名称"] 2 webmethod:web服务方法(包含以下6个属性) description:对webservice服务类中方法的注释 enablesession:标识当前webservice是否启动session;默认为false;(如果false,则无法使用a

asp.net-ASP.NET webservice方法返回求助

问题描述 ASP.NET webservice方法返回求助 省略部分xml代码 <GetUserResponse xmlns="http://tempuri.org/"> <GetUserResult> <xsd:schema>schema</xsd:schema>xml</GetUserResult> </GetUserResponse> 请问一下,这个返回代码中 xsd:schemaschema/xsd:sch

asp.net调用webservice时出现“Microsoft JScript 运行时错误: 对象不支持此属性或方法”

问题描述 环境:VS2008+asp.netfunctionsetShowTitle(obj){varvTitle=window.document.all["lbl_title"];vTitle.innerText=obj.innerHTML;service.useService("../THJ_WebService.asmx?WSDL","THJ_WebService");service.THJ_WebService.callService(p

asp.net-ASP.NET Webservice的一个实例

问题描述 ASP.NET Webservice的一个实例 求大神写一个这样的实例,我用的XmlSchema类,但是后面没有xml 解决方案 http://fyinthesky.blog.163.com/blog/static/3555251720110115227337/ 解决方案二: [WebMethod] public void 方法名(string s1, string s2) { ... }