2011-01-24 37 views
0

這是我第一個CMS應用程序,在背景中是Delphi 7.通過HTTPService動態加載.XML文件時禁用緩存?

我使用5個不同的XMLListCollections,它們是從服務器上的本地文件動態加載的。 HTTPService將第一個加載到DataGrid中就好了,但是當加載任何後續XML文件時,它將加載與以前相同的精確集合!我認爲這必須是緩存?

如何在加載本地XML文件時關閉緩存?我已經嘗試了一些建議,如涉及標題等,但似乎沒有直接處理加載本地文件。

private function loadXMLData(urlVar:String):void 
    var httpService:HTTPService = new HTTPService(); 
    httpService.url = urlVar; 
    httpService.resultFormat = "e4x"; 
    httpService.addEventListener(FaultEvent.FAULT, httpService_fault); 
    httpService.addEventListener(ResultEvent.RESULT, httpService_result); 
    httpService.send(); 
} 

private function httpService_fault(evt:FaultEvent):void { 
    var title:String = evt.type + " (" + evt.fault.faultCode + ")"; 
    var text:String = evt.fault.faultString; 
    alert = Alert.show(text, title); 
} 

private function httpService_result(evt:ResultEvent):void { 
    var xmlList: XMLList; 
    xmlList = XML(evt.result).Events; 
    ArtistsData = new XMLListCollection(xmlList); 
} 

回答

1

我不安靜的德爾福或Flex的傢伙。但原則是一樣的。我們在C#/ Silverlight中做的是在URL的末尾附加一個隨機查詢字符串。

那麼,你有網址: -

httpService.url = urlVar; 

,你會想做的事: -

httpService.url = urlVar + 'Date=' + currentdatetimealongwithmilliseconds; 

這絕對應該忽略緩存,並作出新的要求。

注意: -正如我所說我不是一個Flex的傢伙,你需要在你的Flex解​​決方案中轉換上述行。

+0

試過了,因此它不緩存。它必須是併發性的,我加載這些的時間太近彼此?當我創建一個名爲httpservice的新實例時,我能夠加載第二個XML文件,並且數據應該是它的樣子。我相信我應該使用http服務的TAG版本,我不知道該怎麼做,所以回到書本上。據我所知,mx標籤版本具有併發能力。如果有人可以進一步闡明,請隨時留意,並告訴我是否正確。 – ghiebert 2011-01-24 14:37:15

0

在編輯你的代碼時,我注意到了一個語法錯誤。括號的數量不匹配。我認爲應該有一個支架,我已經添加了一個粗體,使用你的代碼?

我不知道這是否會解決您的問題,但消除任何在你的代碼錯誤縮小了問題:

private function loadXMLData(urlVar:String) { // <== HERE? 
    var httpService:HTTPService = new HTTPService(); 
    httpService.url = urlVar; 
    httpService.resultFormat = "e4x"; 
    httpService.addEventListener(FaultEvent.FAULT, httpService_fault); 
    httpService.addEventListener(ResultEvent.RESULT, httpService_result); 
    httpService.send(); 
} 

private function httpService_fault(evt:FaultEvent) { 
    var title:String = evt.type + "(" + evt.fault.faultCode + ")"; 
    var text:String = evt.fault.faultString; 
    alert = Alert.show(text, title); 
} 

private function httpService_result(evt:ResultEvent) { 
    var xmlList: XMLList; 
    xmlList = XML(evt.result).Events; 
    ArtistsData = new XMLListCollection(xmlList); 
}