国际标准时间"/>
如何获取国际标准时间
如何获取国际标准时间
(2007-10-29 23:53:44)
转载▼
为了制作
奥运倒计时,得想个办法获得到国际标准时间。
首先想到的便是Webservices,通用,易用。
但是Flash
CS3并没有提供Webservices组件。于是使用了Roading的
《flash9/flash cs3(as3)通过soap访问Web Services》。
好了,方法有了,那么Service源呢,这个变难了,找了几个提供Webservices的网站
如:
/
/
但都未找到这项服务。
继续上网冲浪...
得到了
《获取Nist的美国官方标准时间的解决办法》 作者用的是C#实现的,仔细看了下,用AS3制作貌似差不多。
他使用的是 .cgi?UTC/s/0先得到标准时间,然后转为北京八区时间。
实际上有更容易的方法,就是将地址中的0换成8,就是东八区的标准时间了,也就是:
.cgi?UTC/s/8 部分代码:
程序代码
private
function
getTheTime():void
{
var
request:URLRequest
=
new
URLRequest(" .cgi?UTC/s/8 ?rnd="+Math.random());
request.contentType
=
"text/xml";
request.method
=
URLRequestMethod.POST;
loader
=
new
URLLoader();
loader.addEventListener(Event.COMPLETE,
loadComplete);
try
{
loader.load(request);
}
catch
(error:Error)
{
trace("Load
Error!");
}
}
private
function
loadComplete(event:Event):void
{
var
result:String
=
String(loader.data);
trace(result);
}
代码中的 rnd="+Math.random()是用来防止Flash读取缓存,得不到最新数据
loadComplete方法中的result就是得到的网页源码,通过字串匹配就可得到时间字符串了.
OK,回过头来接着研究Webservices。找到了 。
( .aspx也可以访问这个页,使用上面的方法提取出北京时间)
使用Roading的方法:
程序代码
private
function
getTheTime2():void
{
var
soap:Namespace
=
new
Namespace(" /");
var
req:URLRequest
=
new
URLRequest(" .asmx?op=GetLocalDateTimeString");
req.method
=
URLRequestMethod.POST;
req.requestHeaders.push(new
URLRequestHeader("Content-Type",
"text/xml;charset=utf-8"));
req.requestHeaders.push(new
URLRequestHeader("SOAPAction",
" http://worldtimeserver/wtsservice/localtime/GetLocalDateTimeString"));
var
rXML:XML
=
<soap:Envelope
xmlns:xsi=" "
xmlns:xsd=" "
xmlns:soap=" /">
<soap:Body/>
</soap:Envelope>
;
rXML.soap::Body.appendChild(
<GetLocalDateTimeString
xmlns="http://worldtimeserver/wtsservice/localtime">
<User>用户名</User>
<Password>密码</Password>
<WTSLocationID>US-NY</WTSLocationID>
</GetLocalDateTimeString>
);
req.data
=
rXML;
loader
=
new
URLLoader();
loader.dataFormat
=
URLLoaderDataFormat.TEXT;
loader.addEventListener("ioError",
ioSOAPError);
loader.addEventListener(Event.COMPLETE,
SOAPLoaded);
loader.load(req);
}
private
function
ioSOAPError(event:Error):void
{
trace("Load
Error!");
}
private
function
SOAPLoaded(d:Event):void
{
var
_xml:XML
=
new
XML(loader.data);
trace(_xml);
}
之所以用“用户名”和“密码”来填充,因为这个站的服务是收费的。
此外,还发现了一个更容易的方法,来测试一下北京奥委会网站: .php
(不能保证此链接永久有效),嘿嘿,知道怎么用了吧。
再来测试: .asp?user=flash
返回的是一个XML格式字串,处理起来更为容易些。
这样,目前有四个地址可以得到国际标准时间
发布评论