程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> flex 調用WebService2(基於.net),flexwebservice2

flex 調用WebService2(基於.net),flexwebservice2

編輯:C#入門知識

flex 調用WebService2(基於.net),flexwebservice2


    flex 訪問WebService的方法有很多種,使用FLEX4中的"數據/服務"功能可以自動生成訪問WebService的代理類,這樣可以避免把所有的數據訪問都寫到MXML頁面上,便於重復利用,同時可以直接導入後台自定義數據類型,方便傳參。

    直接上代碼:其中WebService接口

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 namespace MyNetWebService {     /// <summary>     /// MyWebService 的摘要說明     /// </summary>     [WebService(Namespace = "http://tempuriTemp.org/")]     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]     [System.ComponentModel.ToolboxItem(false)]     // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。     // [System.Web.Script.Services.ScriptService]     public class MyWebService : System.Web.Services.WebService     {           [WebMethod]         public string HelloWorld()         {             return "Hello World";         }           [WebMethod]         public Model[] GetDetailResult(SearchParameter parmeter, Staff staff)         {             return ModelHelp.GetSaleDetailResult(parmeter, staff);         }     }        }

添加WebService服務:

  連接數據/服務—>Web服務—>WSDL URL:  填寫服務地址(http://localhost/XXX/MyWebService.asmx?WSDL) 

使用FLEX4中的"數據/服務"功能 在services 下生成的代理類:

        

數據/服務 下 導入了webService的方法 和 自定義類型

自動生成訪問WebService的代理類_Super_MyWebService.as 

復制代碼
/**
 * This is a generated class and is not intended for modification.  To customize behavior
 * of this service wrapper you may modify the generated sub-class of this class - MyWebService.as.
 */
package services.mywebservice
{
import com.adobe.fiber.core.model_internal;
import com.adobe.fiber.services.wrapper.WebServiceWrapper;
import com.adobe.serializers.utility.TypeUtility;
import mx.rpc.AbstractOperation;
import mx.rpc.AsyncToken;
import mx.rpc.soap.mxml.Operation;
import mx.rpc.soap.mxml.WebService;
import valueObjects.DetailSearchParameter;
import valueObjects.Employee;
import valueObjects.Sale;

[ExcludeClass]
internal class _Super_MyWebService extends com.adobe.fiber.services.wrapper.WebServiceWrapper
{
     
    // Constructor
    public function _Super_MyWebService()
    {
        // initialize service control
        _serviceControl = new mx.rpc.soap.mxml.WebService();
        var operations:Object = new Object();
        var operation:mx.rpc.soap.mxml.Operation;

        operation = new mx.rpc.soap.mxml.Operation(null, "HelloWorld");
         operation.resultType = String;
        operations["HelloWorld"] = operation;

        operation = new mx.rpc.soap.mxml.Operation(null, "GetDetailResult");
         operation.resultElementType = valueObjects.Sale;
        operations["GetDetailResult"] = operation;

        _serviceControl.operations = operations;
        try
        {
            _serviceControl.convertResultHandler = com.adobe.serializers.utility.TypeUtility.convertResultHandler;
        }
        catch (e: Error)
        { /* Flex 3.4 and eralier does not support the convertResultHandler functionality. */ }



        _serviceControl.service = "MyWebService";
        _serviceControl.port = "MyWebServiceSoap";
        wsdl = "http://localhost/XXX/MyWebService.asmx?WSDL";
        model_internal::loadWSDLIfNecessary();


        model_internal::initialize();
    }

    /**
      * This method is a generated wrapper used to call the 'HelloWorld' operation. It returns an mx.rpc.AsyncToken whose 
      * result property will be populated with the result of the operation when the server response is received. 
      * To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value. 
      * You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.
      *
      * @see mx.rpc.AsyncToken
      * @see mx.rpc.CallResponder 
      *
      * @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.
      */
    public function HelloWorld() : mx.rpc.AsyncToken
    {
        model_internal::loadWSDLIfNecessary();
        var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("HelloWorld");
        var _internal_token:mx.rpc.AsyncToken = _internal_operation.send() ;

        return _internal_token;
    }
     
    /**
      * This method is a generated wrapper used to call the 'GetDetailResult' operation. It returns an mx.rpc.AsyncToken whose 
      * result property will be populated with the result of the operation when the server response is received. 
      * To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value. 
      * You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.
      *
      * @see mx.rpc.AsyncToken
      * @see mx.rpc.CallResponder 
      *
      * @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.
      */
    public function GetDetailResult(parmeter:valueObjects.DetailSearchParameter, loginEmp:valueObjects.Employee) : mx.rpc.AsyncToken
    {
        model_internal::loadWSDLIfNecessary();
        var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("GetDetailResult");
        var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(parmeter,loginEmp) ;

        return _internal_token;
    }
     
}

}
復制代碼

 

 自動生成訪問WebService的代理類MyWebService.as

復制代碼
/**
 * This is a generated sub-class of _MyWebService.as and is intended for behavior
 * customization.  This class is only generated when there is no file already present
 * at its target location.  Thus custom behavior that you add here will survive regeneration
 * of the super-class. 
 **/
 
package services.mywebservice
{

public class MyWebService extends _Super_MyWebService
{

               
}

}
復制代碼

Flex 端Temp.mxml

   

復制代碼
<?xml version="1.0" encoding="utf-8"?>
<mx:Module  xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx" 
            layout="vertical" width="100%" height="100%"
            xmlns:common="common.*"
            xmlns:mywebservice="services.mywebservice.*"
            >
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.soap.WebService;
            import mx.controls.Alert;
            
            protected function btn_call_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                getresult.token=MyWebService.HelloWorld();
            }
            
            protected function getresult_resultHandler(event:ResultEvent):void
            {
                // TODO Auto-generated method stub
                if(event.result!=null)
                {
                    resultweb.text=event.result as String;
                }
            }

        ]]>    
    </fx:Script>
    <!-- 引用css樣式 -->
    <fx:Style source="css/style.css" />
        
    <fx:Declarations>
        <!-- 將非可視元素(例如服務、值對象)放在此處 -->
        <mywebservice:MyWebService id="MyWebService"  showBusyCursor="true" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"/> 
        <s:CallResponder id="getresult" result="getresult_resultHandler(event)" />
    </fx:Declarations>
    <s:VGroup width="100%" height="100%" paddingLeft="10" paddingRight="10" paddingBottom="10" paddingTop="3">
        <s:HGroup width="100%" verticalAlign="middle">
            
            <mx:Text id="resultweb"/>
            <common:Cbutton id="btn_call" label="調用webService" click="btn_call_clickHandler(event)" />
        </s:HGroup>
        <s:HGroup width="100%" verticalAlign="middle">
            <s:Label verticalAlign="middle" styleName="msgTxtStyle" width="100%" id="msg_label"/>
        </s:HGroup>
    </s:VGroup>
</mx:Module >
復制代碼

 運行結果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved