当前位置: 好工具 >> 网络编程 >> .Net编程

Flex(FlashBuilder)消费asp.netWebService

2011/6/8 12:39:32

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>

关于好工具 互联网资讯 Seo .Net编程 网站地图

Copyright 2011-2013 HaoGongJu.Net ( 好工具 ) All Rights Reserved