Обновление XML-файла через HTTPService во Flex - PullRequest
1 голос
/ 22 апреля 2010

У меня проблема с обновлением XML-файла.Я передаю его через компонент службы HTTP и помещаю в связываемый массив _cattArr, который я использую в качестве поставщика данных для сетки.

Когда кто-то добавляет элемент в сетку данных, он сохраняет егоXML-файл.Затем я закрываю окно, снова открываю его и не вижу добавленный элемент.

Запись в файл xml, потому что, когда я перезапускаю приложение flex, элемент был добавлен, он простоне освежая это.Я пытался повторно отправить httpservice, но все равно не повезло.Как правильно это сделать?

Ответы [ 4 ]

1 голос
/ 22 апреля 2010

Я предполагаю, что браузер кэширует файл, ведь Flex и Flashplayer используют браузер в качестве основы.

На стороне сервера вы можете попытаться не устанавливать заголовки кэша - это зависит от вашего сервера.

На стороне клиента вы можете делать разные вещи:

  • Используйте POST вместо GET, POST не кэшируются
  • прикрепить номер «версии» к строке запроса: http://server/file.xml?version=1234. Если вы используете новую версию для каждого запроса, браузер должен загрузить ее и не будет обслуживать ее из кэша.
0 голосов
/ 07 октября 2013

Я согласен с размещением случайного параметра в URL.Я просто увеличиваю переменную каждый раз, когда вызывается служба (в обработчике результатов), и вставляю параметр в конец URL:

<mx:HTTPService id="getService" 
    url="http://serverpath/GetService.php?t={incNum}"  
    method="POST" resultFormat="xml" 
    result="getServiceResult(event)" fault="getServiceFault(event)" useProxy="false"/>

...
...

[Bindable]
private var incNum:int;

public function doInc():void :
    incNum++;
}

private function getServiceResult(e:Event):void {
    // get XML and disperse it to the UI
   doInc();
}
private function getServiceFault(e:Event):void {
    // report error codes, and fail gracefully
}

Таким образом, для каждого вызова службы вы можете увеличивать это число наположительный результат.(Вы можете сделать это и в случае ошибки, в зависимости от того, как вы хотите структурировать вещи.) Это гарантирует, что браузер всегда должен будет делать свежий, не кэшированный вызов базы данных и извлекать вновь сохраненные данные дляваш пользовательский интерфейс.

0 голосов
/ 22 апреля 2010

Всегда добавляйте случайное число, чтобы получить новый XML-файл ..

Атул Ядав

0 голосов
/ 22 апреля 2010

Как упоминалось в предыдущем ответе, самое простое решение - просто добавить фиктивный случайный http-параметр в URL-адрес перед выполнением вызова HttpService. например,

var hs:HttpService = new HttpService();
hs.url = "http://myserver/files/myXml1.xml?t=" + new Date().getTime();
//attach listeners to hs
hs.send();

Таким образом, вы никогда не получите кэшированный xml из браузера. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...