Flex请求webservice

flex除了可以和spring整合之外,有时也会使用flex去访问webservice,flex提供了访问webservice的一套方法使用起来也是特别的简单。下面分享我的学习成果

1.寻找用于测试的webservice服务

http://www.webxml.com.cn/zh_cn/index.aspx

这个网站提供了许多webservice,可以供我们学习和使用

2.开始使用flex请求webservice,这里就使用号码归属地和天气预报作为例子

(1)使用flex标签载入wsdl

<s:WebService wsdl="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl" id="webservice">
	<s:operation name="getMobileCodeInfo" result="getMessage(event)" fault="onFault(event)"/>
</s:WebService>
<s:WebService wsdl="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl" id="webservice2" >
	<s:operation name="getWeather" result="getWeatherResult(event)" resultFormat="object" fault="onFault(event)"/>
</s:WebService>

wsdl就是web服务的wsdl地址,id一定要写上方便后面使用,operation里的name就是webservice暴露出来的方法,result则是回调函数,fault表示出现错误后的函数调用,这个不配置也OK

(2) 调用手机号码归属地服务

webservice.getOperation("getMobileCodeInfo").send(number.text);

webservice是第一个标签的id,表示我们要使用里面的服务,getOperation的参数就是要调用方法名称,send里面是我们要提供给服务器的参数

(3)使用回调函数处理webservice返回结果

var ss:String=event.result as String;
Alert.show(ss);

天气预报服务也是如此,但是要注意的是天气预报服务返回的是一个一维数组

天气预报返回结果如下:


下面是全部的代码:

<?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">
	<fx:Declarations>
		
		<!-- Place non-visual elements (e.g., services, value objects) here -->
		<s:WebService wsdl="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl" id="webservice">
			<s:operation name="getMobileCodeInfo" result="getMessage(event)" fault="onFault(event)"/>
		</s:WebService>
		<s:WebService wsdl="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl" id="webservice2" >
			<s:operation name="getWeather" result="getWeatherResult(event)" resultFormat="object" fault="onFault(event)"/>
		</s:WebService>
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.rpc.events.ResultEvent;
			import mx.events.CloseEvent;
			public function getMessage(event:ResultEvent){
				var ss:String=event.result as String;
				Alert.show(ss);
			}
			public function getWeatherResult(event2:ResultEvent):void{
				var ss2:ArrayCollection=ArrayCollection(event2.result);
				Alert.show(ss2[1]+"\n"+ss2[4]+"\n"+ss2[5]);
			}
			public function invokeWebservice(event:Event){
				webservice.getOperation("getMobileCodeInfo").send(number.text);
				
			}
			public function invokeWebservice2(event:Event){
				webservice2.getOperation("getWeather").send(city.text,'');
				
			}
			public function  onFault(event:Event):void{
				Alert.show("访问错误");
			}
			/*public function  show(event:Event):void{
				Alert.yesLabel = '是'; 
				Alert.noLabel = '否'; 
				Alert.cancelLabel = '取消'; 
				Alert.show('确认操作无误吗','确认?',1|2|8,this,back);     
			}
			public function  back(event:CloseEvent):void{
				if(event.detail==Alert.YES){ 
					Alert.show("你选择了是");  
				}else if(event.detail==Alert.NO){
					Alert.show("你选择了否");  
				}else{
					Alert.show("你选择了取消");  
				}
				
			}*/
		]]>
	</fx:Script>
	<s:VGroup>
		
		<s:HGroup paddingTop="30" verticalAlign="middle">
			<s:Label text="输入你的电话号码"/>
			<s:TextInput id="number"/>
			<s:Button label="获取号码归属地" click="invokeWebservice(event)"/>
		</s:HGroup>
		<s:HGroup paddingTop="30" verticalAlign="middle">
			<s:Label text="输入城市名称"/>
			<s:TextInput id="city"/>
			<s:Button label="获取天气" click="invokeWebservice2(event)"/>
		</s:HGroup>
		<!-- <s:HGroup paddingTop="30" verticalAlign="middle">
			
			<s:Button label="显示确认框" click="show(event)"/>
		</s:HGroup> -->
	</s:VGroup>
</s:Application>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值