在flash as3项目中调用 web service

flash as3的类库默认不支持web service,要在as3项目中使用web service,则必须将flex的sdk中相关类库(swc)拷贝至项目中,并引用。


1、在fd 中创建as3项目



2、把flex sdk中的swc全部拷贝至项目文件夹中,并引用。

这里懒得研究到底需要哪些swc了



3、调用过程

由于web service对外公开了wsdl,在调用过程中,此wsdl需要在flash中缓存一次,等加载这个wsdl完毕就可以调用web service中的方法了

(1)加载wsdl
//定义属性
private var _service:WebService;

//构造函数

_service = new WebService(url);
_service.addEventListener(LoadEvent.LOAD,onWSDL);
_service.addEventListener(FaultEvent.FAULT, onFaultWsdl);



//事件处理

private function onFaultWsdl(e:FaultEvent):void
{

}

private function onWSDL(e:LoadEvent):void
{
//此时可以调用方法了
}



(2)调用方法:

///

private var callObject:Operation;


///

callObject = _service['funName']; //funName为调用方法的名字
callObject.addEventListener(ResultEvent.RESULT, onResult);

CallObject.addEventListener(FaultEvent.FAULT, onFault);

callObject.send.apply(null, [param0,param1,param2,...]); //param0,param1,param2,...为调用参数



//处理调用错误

private function onFault(e:FaultEvent):void
{

}


//处理调用结果
private function onResult(e:ResultEvent):void
{
trace(e.result);
}



完整代码:


package  
{
import flash.display.Sprite;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.LoadEvent;
import mx.rpc.soap.Operation;
import mx.rpc.soap.WebService;
/**
* ...
* @author Randy
*/
public class TestWebservice extends Sprite
{
private var _service:WebService;
private var _callObject:Operation;


public function TestWebservice()
{
_service = new WebService;
_service.addEventListener(LoadEvent.LOAD,onWSDL);
_service.addEventListener(FaultEvent.FAULT, onFaultWsdl);
_service.loadWSDL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl");
}


private function onFaultWsdl(e:FaultEvent):void
{
trace("加载wsdl失败: "+e.message);
}

private function onWSDL(e:LoadEvent):void
{
_callObject = _service["getSupportProvince"];
_callObject.addEventListener(ResultEvent.RESULT, onResult);
_callObject.addEventListener(FaultEvent.FAULT, onFault);
_callObject.send.apply(null,null);
}



private function onFault(e:FaultEvent):void
{
trace("调用webservice失败: " + e.message);
}

private function onResult(e:ResultEvent):void
{
trace("省份: " + e.result);

var provs:Array = String(e.result).split(",");


_callObject = _service["getSupportCity"];
_callObject.addEventListener(ResultEvent.RESULT, onResultCity);
_callObject.addEventListener(FaultEvent.FAULT, onFault);
_callObject.send.apply(null,[provs[2]]);
}

private function onResultCity(e:ResultEvent):void
{
trace("地区:" + e.result);
}



}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值