今天學了下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>
?
程序運行結果:
?
?
?