Мобильный запрос Flex на time.nist.gov

Как получить доступ ко времени, предоставляемому службами времени в Интернете, такими как time.nist.gov, из моего мобильного приложения Flex?

Есть ли способ сделать это через URLRequest или HTTPService?

Хорошо, вот вызов Yahoo WebServices с помощью простого HTTPService;

<s:HTTPService id="serverTime" url="http://developer.yahooapis.com/TimeService/V1/getTime?appid=myID" result="resultHandler(event)" resultFormat="e4x"/>

В моем resultHandler трассировка на Timestamp уже не удалась (не возвращает значения);

private function resultHandler(event:ResultEvent):void {
            // this works (outputs the xml as shown on Yahoo
            trace(event.result);

            var xmlResult:XML = event.result as XML;
            var timestamp:String = xmlResult.Timestamp;

            trace("stamp" + timestamp);
}

person AlBirdie    schedule 01.02.2012    source источник
comment
По какой-то причине (я действительно понятия не имею) обращение к дочерним узлам через имя тега не работает с HTTPService, поэтому я изменил формат возврата на XML и обратился к дочернему элементу напрямую через XMLNode (XMLNode(xmlNode.childNodes[0]) .firstChild.nodeValue).   -  person AlBirdie    schedule 01.02.2012
comment
Я думаю, вы пропустили корневой тег Result. Итак, это: var timestamp:String = xmlResult.Result.Timestamp   -  person Radu Cugut    schedule 01.02.2012
comment
и, что еще лучше, почему бы не использовать resultFormat=object, а затем получить доступ к метке времени в вашем обработчике событий, например: event.result[Result][Tmestamp] (я предпочитаю [] нотации .)   -  person Radu Cugut    schedule 01.02.2012
comment
С e4x вам не нужно идти вверх по дереву до корневого тега, но даже с xml в качестве формата результата доступ к Result.Timestamp не работал. Впрочем, не спрашивайте меня, почему.   -  person AlBirdie    schedule 01.02.2012


Ответы (1)


time.nist.gov (или любой другой сервер времени) использует для связи протокол NTP, а не HTTP, поэтому вы не можете использовать URLRequest или HTTPService. Я не знаю ни одной реализации NTP-клиента в ActionScript. Возможно, вам придется сделать свой собственный.

В зависимости от ваших потребностей вы можете использовать веб-сервис, который предоставляет «довольно точное» время, например Веб-сервисы Yahoo. Это происходит через HTTP, поэтому вы можете использовать URLRequest или HTTPService во Flex.

person Radu Cugut    schedule 01.02.2012
comment
Ура, приятель, Yahoo абсолютно достаточно (мне нужна точность только до дней, так что все в порядке). Я попробую! - person AlBirdie; 01.02.2012
comment
Хорошо, пока это работает нормально, за исключением того, что синтаксический анализ, похоже, вызывает проблему. Я получаю весь XML-результат, как показано на странице WebServices. (Формат результата моего HTTPService — e4x), однако доступ к узлу Timestamp не работает должным образом. Я отредактировал свой первоначальный пост, чтобы проиллюстрировать проблему. - person AlBirdie; 01.02.2012