今天学了下HttpService,和大家分享一下。HttpService是用来读取远程数据的一个对象,数据格式为XML。
我做了一个登陆校验的功能,主要是通过HttpService将服务器端的用户数据得到,然后在客户端判断输入的用户名和密码是否存在。
主要步骤如下:
- 声明HttpService对象
- 调用HttpService对象的send()方法
- 使用ResultEvent.result方法得到返回数据 或者 使用HttpService.lastResult方法得到返回数据
程序代码:
1 <?xml version="1.0" encoding="utf-8"?> 2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 3 xmlns:s="library://ns.adobe.com/flex/spark" 4 xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" 5 creationComplete="userpassService.send()"> 6 <fx:Declarations> 7 <!-- 将非可视元素(例如服务、值对象)放在此处 --> 8 <s:HTTPService id="userpassService" url="http://localhost:8080/xmltest/users.xml" result="handlerUserPassSend(event)" 9 resultFormat="e4x"> 10 </s:HTTPService> 11 </fx:Declarations> 12 13 <fx:Script> 14 <![CDATA[ 15 import mx.controls.Alert; 16 import mx.rpc.events.ResultEvent; 17 18 /**通过HttpService得到远程数据*/ 19 private var usersArr:XMLList; 20 private function handlerUserPassSend(event:ResultEvent):void 21 { 22 //接收返回的数据 23 var returnObj:Object = event.result; 24 usersArr = returnObj.users.user; 25 } 26 27 private function handlesendButtonClick(event:Event):void 28 { 29 if(judgeText()) 30 { 31 for(var i:int = 0; i < usersArr.length; i++) 32 { 33 var usernameIn:String = usersArr[i].username; 34 var passwordIn:String = usersArr[i].password; 35 if(usernameIn == username && passwordIn == password) 36 { 37 Alert.show("用户登陆成功"); 38 return; 39 } 40 } 41 42 Alert.show("用户不存在"); 43 return; 44 } 45 } 46 47 /**判断输入是否合法*/ 48 private var username:String; 49 private var password:String; 50 private function judgeText():Boolean 51 { 52 if(usernameText.text == "" || usernameText.text == null) 53 { 54 Alert.show("用户名不能为空"); 55 return false; 56 } 57 else if(passwordText.text == "" || passwordText.text == null) 58 { 59 Alert.show("密码不能为空"); 60 return false; 61 } 62 63 username = usernameText.text; 64 password = passwordText.text; 65 66 return true; 67 } 68 ]]> 69 </fx:Script> 70 71 72 <s:Panel width="40%" height="40%" horizontalCenter="0" verticalCenter="0"> 73 <s:Form width="80%" height="80%"> 74 <s:FormItem label="username: " fontSize="20"> 75 <s:TextInput id="usernameText"/> 76 </s:FormItem> 77 <s:FormItem label="password: " fontSize="20"> 78 <s:TextInput id="passwordText"/> 79 </s:FormItem> 80 <s:FormItem> 81 <s:Button id="sendButton" label="login" click="handlesendButtonClick(event)"/> 82 </s:FormItem> 83 </s:Form> 84 </s:Panel> 85 </s:Application>
第7~10行声明了一个HttpService对象,其中url属性指定的是要请求的资源路径,这里是本地tomcat服务器的xmltest/users.xml, result属性是请求资源返回后触发的方法, resultFormat属性是将返回的数据类型转换的格式,这里使用e4x格式是指将数据按XML格式读取,而不是封装成对象。
远程数据:(http://localhost:8080/xmltest/users.xml)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <users> 3 <user> 4 <username>yuan</username> 5 <password>123</password> 6 </user> 7 <user> 8 <username>quan</username> 9 <password>589</password> 10 </user> 11 </users>
程序运行结果: