flash+asp.net webServices入门教程(二)

在Flash中调用WS时的身份验证_2:输入与输出_1

下面让我们来了解一下flash中的Web服务类。
Web 服务类存在于mx.services包中。为了能够在运行时使用 Web 服务类,WebServiceClasses 组件必须位于 FLA 文件的库中。 Web服务类包含四个关键的类:WebService 类、PendingCall 类、Log 类、SOAPCall 类。其中, WebService 类、PendingCall 类与ws调用直接相关。通过WebService 类的构造器可以在Flash Player中返回指定WebService对象。如下面所示

Var myWebServiceObject:WebService = new WebService(wsdlURI);

参数wsdlURI指向引用的Web服务地址,比如“http://localhost/ws/test.asmx?wsdl”然后使用 PendingCall 类型的回调对象,在PendingCall回调对象的onResult方法中处理ws中指定方法的结果。比如:

var op_1:PendingCall=myws. hello ();
op_1.onResult= hello;

下面我们还是用一个例子来看一看Web服务类是怎么工作的。
说明:这个例子演示了在ws接受来自客户端的数字简单类型、日期和时间简单类型、bool类型、名称和字符串简单类型以及Array类型参数并返值。
首先还是构造服务器端的ws。
打开一个文本文件,声明一个WebService 处理指令
1、 如下:
<%@ WebService Language="c#" Codebehind="sample2.asmx.cs" Class="wsLearn.sample2" %>
命名为:sample2.asmx,放到虚拟目录http://localhost/ws/下。
Language  属性指示开发 XML Web services 所使用的编程语言。可以使用任何与 .NET 兼容的语言(如 Visual Basic .NET  或 Visual C#)来创建 XML Web services。与 .asmx 页关联的支持代码文件由 Codebehind 属性来指示。 Class 属性指示支持代码文件中用来实现 XML Web services 功能的类。
2、 新建一个cs文档:写入如下代码:
/* ======================================================================

C# Source File -- Created with SAPIEN Technologies Primalcode 3.0

NAME: sample2.asmx.cs

AUTHOR: JimLee , Dxl School
DATE : 2004-10-7

COMMENT: 这个例子演示了在ws接受来自客户端的数字简单类型、日期和时间简单类
型、bool类型、名称和字符串简单类型以及Array类型参数并返值。

====================================================================== */

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

namespace wsLearn{
[WebService(Namespace="http://www.dxlschool.com/ws/";,Description="例2,演示ws方法的传值",Name="s2")]
public class sample2:System.Web.Services.WebService{
public sample2(){
//
}

[WebMethod]
public string GetUserName(string tName){
return "你好,"+tName;
}
}
}

注意下列几处代码:
[WebService(Namespace="http://www.dxlschool.com/ws/";,Description="例2,演示ws方法的传值",Name="s2")]
WebService 属性提供以下属性:
Description - 此属性的值包含描述性消息,此消息将在 XML Web services 的说明文件(例如服务说明和服务帮助页)生成后显示给 XML Web services 的潜在用户。 
Name  - 此属性的值包含 XML Web services 的名称。默认情况下,该值是实现 XML Web services 的类的名称。Name 属性标识 XML Web services 的 XML 限定名称的本地部分。Name 属性也用于在服务帮助页上显示  XML Web services 的名称。 
Namespace - 此属性的值包含 XML Web services 的默认命名空间。XML 命名空间提供了一种在 XML 文档中创建名称的方法,该名称可由统一资源标识符 (URI) 标识。使用 XML 命名空间,可以唯一标识  XML 文档中的元素或属性。因而,在 XML Web services 的服务说明中,Namespace 被用作与  XML Web services 直接相关的 XML 元素的默认命名空间。如果不指定命名空间,就使用默认命名空间http: //tempuri.org/

public class sample2:System.Web.Services.WebService
类sample2继承自基类System.Web.Services.WebService,它提供了直接访问常见 ASP.NET 对象(如应用程序和会话状态的对象)的权限。需要注意的是该类必须是公共的,并且必须有一个公共的默认构造函数(不带参数的构造函数)。

[WebMethod]
通过在 Public 方法声明之前放置 WebMethod 属性可以指定在 XML Web services中可用的方法。Private 方法不能充当 XML Web services 的入口点,尽管它们可以采用相同的类并且 XML Web services 代码可以调用它们。 WebMethod 属性必须应用到可用作 XML Web services 一部分的每种公共方法中。

3、 将上面的cs文件命名为sample2.asmx.cs,用csc /t:library $File$将其编译为sample2.asmx.dll,在虚拟目录http: //localhost/ws/下新建子目录bin,将sample2.asmx.dll复制到http://localhost/ws/bin/下
下面就可以在浏览器中测试你的ws了:http://localhost/ws/sample2.asmx
或者http://localhost/ws/sample2.asmx?wsdl

下面让我们在flash中调用这个ws(现在它只包含一个方法GetUserName)。
1、 拖动WebSessionClasses组件到舞台上,将Web服务类包导入Fla,删除舞台上的WebSessionClasses组件的实例。
2、 拖动一个Button组件到舞台上,命名为:GetUN_bt,设置label属性为:“GetUserName”;
3、 添加如下动作脚本:
/**
ActionScript Class File -- Created with SAPIEN Technologies PrimalScript 3.0

@class wsSample_2 
@package wsSample_2.as
@author JimLee
@codehint 
@example 
@tooltip 
*/

import mx.services.*;

var myws:WebService=new WebService("http://localhost/ws/sample2.asmx?wsdl";);

function GetUserName(result){
trace("ws返回的值为:");
trace("///");
trace(result);
}

this.GetUN_bt.onPress=function(){ 
var op_1:PendingCall=myws.GetUserName("乔狗!!");
op_1.onResult=GetUserName;


赫赫,一点新东西都没有,只不过在PendingCall回调的方法中加入了参数值"乔狗!!"而已,就好像使用本地方法一样爽耶!

下面,你又可以测试一下了。

转载于:https://www.cnblogs.com/cheatlove/articles/360450.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值