• Flex(Flash Builder) 消费 asp.net WebService


    Service1.asmx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    
    namespace TestWebServiceForFlex
    {
        /// <summary>
        /// Service1 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
        // [System.Web.Script.Services.ScriptService]
        public class Service1 : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World,中国";
            }
    
            [WebMethod]
            public double Calc(double radius)
            {
                double d= radius * radius * Math.PI;
                return d;
            }
        }
    }
    

    前台Flex调用:

    _Super_Service1.as

    /**
     * This is a generated class and is not intended for modfication.  To customize behavior
     * of this service wrapper you may modify the generated sub-class of this class - Service1.as.
     */
    package services.service1
    {
    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;
    
    [ExcludeClass]
    internal class _Super_Service1 extends com.adobe.fiber.services.wrapper.WebServiceWrapper
    {
         
        // Constructor
        public function _Super_Service1()
        {
            // 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, "Calc");
    		 operation.resultType = Number; 		 
            operations["Calc"] = 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 = "Service1";
            _serviceControl.port = "Service1Soap";
            wsdl = "http://localhost:3856/Service1.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 'Calc' 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 Calc(radius:Number) : mx.rpc.AsyncToken
    	{
    		model_internal::loadWSDLIfNecessary();
    		var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("Calc");
    		var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(radius) ;
    
    		return _internal_token;
    	}   
    	 
    }
    
    }
    

    界面文件:

    TestWebServiceAspNet.mxml

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    			   xmlns:s="library://ns.adobe.com/flex/spark" 
    			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" width="797" height="512" xmlns:service1="services.service1.*">
    	<s:layout>
    		<s:BasicLayout/>
    	</s:layout>
    	<fx:Script>
    		<![CDATA[
    			import mx.controls.Alert;
    			
    			protected function btnGetResult_clickHandler(event:MouseEvent):void
    			{
    				CalcResult.token = service1.Calc(parseFloat( this.txtRadius.text));				
    			}
    			
    			
    			protected function button_clickHandler(event:MouseEvent):void
    			{
    				HelloWorldResult.token = service1.HelloWorld();
    			}
    			
    		]]>
    	</fx:Script>
    	<fx:Declarations>		
    		<service1:Service1 id="service1" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
    		<s:CallResponder id="CalcResult"/>
    		<s:CallResponder id="HelloWorldResult"/>
    		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
    	</fx:Declarations>
    	<s:Panel x="20" y="24" width="331" height="203" title="计算圆的面积">
    		<s:Button x="69" y="99" label="计算" id="btnGetResult" click="btnGetResult_clickHandler(event)"/>
    		<s:TextInput x="69" y="25" id="txtRadius"/>
    		<s:Label x="34" y="25" text="半径:"/>
    		<s:Label x="36" y="69" text="结果:"/>
    		<s:Label x="71" y="69" id="lblResult" text="{CalcResult.lastResult}"/>
    	</s:Panel>
    	<s:Panel x="375" y="24" width="300" height="203" title="SayHello">
    		<s:Button x="117" y="102" label="按钮" id="button" click="button_clickHandler(event)"/>
    		<s:Label x="94" y="63" text="{HelloWorldResult.lastResult}"/>
    	</s:Panel>
    </s:Application>
    

  • 相关阅读:
    VirtualBox Win7 虚拟机 共享文件夹设置
    图像的 SNR 和 PSNR 的计算
    swprintf %s %ws %S 的区别
    解决 Virtual Box 启动 Cannot load R0 module supLoadModule returned VERR_LDR_MISMATCH_NATIVE Failed to register ourselves as a PCI Bus (VERR_MODULE_NOT_FOUND)
    VS2015/2013/2012 IIS Express Debug Classic ASP
    Beginning Android 4 中 Demo Basic/Switch 的问题.
    【虚拟机】解决网络适配器没有 VirtualBox Host-Only Ethernet Adapter 问题
    Docker安装Tomcat镜像并部署web项目
    Docker——入门实战
    Centos7上安装docker
  • 原文地址:https://www.cnblogs.com/wucg/p/2075057.html
Copyright © 2020-2023  润新知