2
我很清楚如何在Flex中使用HTTP服務,但我想分開調用服務的功能並獲得不同ActionScript類中服務的響應。那麼有沒有人知道我如何返回HTTP服務在Flex中的響應?如何在flex中返回HTTP服務響應?
例如,
在實用工具類我想有一個方法,我會給一個URL,它會給我從該位置獲得的數據。而已。考慮下面的代碼片段。參考代碼取自could not be able to create http service programmitically in flex
private function callService():void
{
var requestObj:Object = {};
requestObj.q = cityName.text.toString();
requestObj.format = FORMAT;
requestObj.num_of_days = cNUMBER_OF_DAYS;
requestObj.key = API_KEY;
var weatherService:HTTPService = new HTTPService();
weatherService.url = BASE_URL;
weatherService.resultFormat = "object";
weatherService.showBusyCursor = true;
weatherService.request = requestObj;
weatherService.addEventListener(ResultEvent.RESULT , weatherService_resultHandler);
weatherService.addEventListener(FaultEvent.FAULT, weatherService_faultHandler);
weatherService.send();
}
protected function weatherService_resultHandler(event:ResultEvent):void
{
trace("got result");
**//WANT TO GIVE THIS RESULT BACK TO THE CALLER. SINCE RETURN TYPE OF
//METHOD IS VOID I CANNOT RETURN ANYTHING FROM HERE. HOW TO MAKE THIS
//METHOD TO RETURN DATA?**
}
protected function weatherService_faultHandler(event:FaultEvent):void
{
trace("got fault");
}
感謝您的答覆。但對於您的解決方案,我的問題仍將存在。我想完全解耦的類,我只需要給方法url(以及其他信息,如果有的話)從中獲取數據,並且方法將返回我只是響應,沒有別的。如果我將返回weatherService對象,那麼我將不得不在處理函數中編寫處理程序,這不是我想要做的。你能否給我提示你正在使用的另一種解決方案。 – ankurtr
在你的情況下,完全解耦調用者和服務類的最簡單方法是創建自定義事件,即帶_data:String_和_DATA_和_ERROR_類型的字段的_ServiceEvent_,但此解決方案缺少同時請求(例如,如果您從_callService_中調用_callService_對於不同的呼叫者,第二個呼叫者將被從第一個呼叫者的數據觸發)。通過將回調對象/方法從調用者傳遞給_callService_或爲每個請求創建單獨的請求服務,可以解決此問題。) – fsbmain
您可以提供任何代碼示例/文檔/教程來解釋您所說的內容,因爲我不熟悉彎曲,以便我可以理解你想說什麼。 – ankurtr