先摘錄httpservice的adobe關於mxml的官方內容如下:
在 mxml 檔案中使用 標籤代表 httpservice 物件。當呼叫 httpservice 物件的 send() 方法時,將發出對指定 url 的 http 請求,並且返回 http 響應。可以選擇向指定 url 傳遞引數。如果沒有使用基於伺服器的**服務,則只能使用 http get 或 post 方法。如果將 useproxy 屬性設定為 true 並使用基於伺服器的**服務,則還可以使用 http head、options、trace 和 delete 方法。
注意:由於軟體限制,當使用 get 時 httpservice 不生成使用者介面友好的錯誤訊息。
mxml 語法
源文件 <>
按照mxml的語法傳引數時可以使用標記,需要放在fx:declarations標籤裡,例子如下:
resultformat="xml" fault="[失敗處理方法,記得把事件傳過去]"
result="[結果處理方法,記得把事件傳過去]">
[account]
[password]
也可以在actionscript裡使用物件的方式,例子如下:
service.url = "[http://位址|https://位址]";
service.useproxy = false;
service.resultformat="xml";
service.addeventlistener(resultevent.result,[結果處理方法,記得把事件傳過去]);
service.addeventlistener(faultevent.fault,[失敗處理方法,記得把事件傳過去]);
var parameter:urlvariables = new urlvariables();
parameter.account = [account];
parameter.password = [password];
service.send(parameter);
在使用urlvariables時碰到乙個問題,如果引數名本身就含有選擇符「.」,比如:
var parameter:urlvariables = new urlvariables();
parameter.account.system = [account];
parameter.password.system = [password];
執行時會報錯如下:
typeerror: error #1010: 術語尚未定義,並且無任何屬性。
at com.adobe.sample::sample/dologonsubmit()[f:\[mxml路徑]\sample.mxml:xx]
at flash.events::eventdispatcher/dispatcheventfunction()
at flash.events::eventdispatcher/dispatchevent()
at mx.core::uicomponent/dispatchevent()[e:\dev\4.y\frameworks\projects\framework\src\mx\core\uicomponent.as:13152]
at com.adobe.sample::logonform/validate()[f:\[mxml路徑]\logonform.mxml:xx]
at com.adobe.sample::logonform/__logonsubmit_click()[f:\[mxml路徑]\logonform.mxml:xx]
要傳遞帶選擇符的引數,使用如下方法:
var parameter:object = ;
好了,這裡還要做的就是亂碼問題,對於中文這樣的多位元組文字需要編碼後傳到伺服器,編碼方式簡單介紹如下:
1、escape,對0-255以外的unicode值進行編碼時輸出%u****格式。
2、encodeuri,將字串編碼為有效的 uri(統一資源識別符號)。將完整的 uri 轉換為乙個字串,其中除屬於一小組基本字元的字元外,其他所有字元都以 utf-8
轉義序列進行編碼。
3、encodeuricomponent:將字串編碼為有效的 uri 元件。將 uri 的子字串轉換為乙個字串,其中除屬於非常小的一組基本字元的字元外,其他所有字元都以
utf-8轉義序列進行編碼。encodeuricomponent() 函式與 encodeuri() 函式不同,它僅適用於 uri 字串的一部分(稱為 uri 元件)。uri 元件是指出現在某些特殊字元
之間的任何文字,這些特殊字元稱為元件分隔符(: / ; 和 ? )。「http」和「www.adobe.com」是常見的 uri 元件示例。
此函式與 encodeuri() 的另乙個重要區別是:由於此函式假定它處理的是 uri 元件,因此它會將特殊分隔符字元 (; / ? : @ & = + $ , #) 視為應進行編碼的常規文字。
encodeuricomponent是將中文、韓文等特殊字元轉換成utf-8格式的url編碼,所以如果給後台傳遞引數需要使用encodeuricomponent時需要後台解碼對utf-8支援。
具體採用哪種方式需要配合伺服器端的解碼方式,如果伺服器端的解碼方式已經固定了,則還可以對編碼結果進行替換等處理,如果伺服器端的解碼方式還沒有那就隨便了。
分類: flex
在Flex中使用訊息服務
flex與伺服器的通訊元件除了httpservice,remoteobject,webservice外,還有producer consumer元件。producer和consumer使用messaging的方式通訊,與請求響應機制不同,這是一鐘發布訂閱機制。客戶端向伺服器訂閱訊息,當伺服器訊息發生變...
flex在for迴圈中使用setTimeout
有時候我們需要在flex中使用延時載入的功能,下面我簡單記錄一下如何在for迴圈中使用flex延時載入方法settimeout的用法 方法如下 flash.utils.settimeout closure function,delay number,parameters uint 引數詳解 clos...
在flex中使用CSS改變控制項樣式
昨天在搞乙個對話方塊的外觀 使用css搞定 http www.riashanghai.com node 7這篇文章對我幫助很大 心得寫一下,自己留著好看 需要乙個css檔案,例如default.css 在mxml中需要使用 進行 對控制項進行繫結 例如 控制項 mybutton 需要在default...