在Flash中調用WS時的身分識別驗證_2:輸入與輸出

來源:互聯網
上載者:User
下面讓我們來瞭解一下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回調的方法中加入了參數值"喬狗!!"而已,就好像使用本地方法一樣爽耶!

下面,你又可以測試一下了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.