让我的 AS3 代码在不属于我的网站上获取信息
Make my AS3 code go fetch information on a website that I don't own
有这个网站:http://www.swellmap.co.nz/,我想让我的 AS3 代码去获取一些信息并将其显示为 flash。
如果我不拥有该网站,可以吗?
例子:
我想在我的 AS3 代码中显示这些信息。这可能吗 ?我能怎么做 ?
感谢您的帮助,
编辑
感谢 VC.One 的完整答案我已经成功地将信息粘贴到一个字符串中。
这是我所做的:
var myString:String;
var request:URLRequest = new URLRequest("http://www.swellmap.co.nz/ajr.php?r=plugin&a=Surfing&s=Anse%20Vata&country=nz&swellmap=1&country=ncd&swellmap=1&_=1460963404274");
var loader:URLLoader = new URLLoader();
loader.load(request);
loader.addEventListener(Event.COMPLETE,weatherLoaded);
function weatherLoaded(e:Event):void{
myString = e.target.data;
trace(myString); //output is {"tides":"High: 05:40 am (1.32 m); Low: 12:10 pm (0.57 m); High: 06:10 pm (1.19 m); ","seatemp":"27°C","forecastdate":"17h","rating":"<img src='http:\/\/www.swellmap.co.nz\/style\/img\/weathericons\/1r.png' alt='Poor conditions' title='Poor conditions' \/>","rating_class":"<span class='badge badge-important' alt='Poor conditions' title='Poor conditions'>1<\/span>","summary":"<img class='wx-summary' src='http:\/\/www.swellmap.co.nz\/style\/img\/weathericons\/suncloud.png' title='Sunny with some cloud' \/>","title":"Anse Vata","smaplink":"http:\/\/www.swellmap.co.nz\/surfing\/new-caledonia\/anse-vata","vars":{"hs_sw":{"value":"0.4","title":"Swell","unit":"m"},"hs":{"value":"0.6","title":"Wave","unit":"m"},"wface":{"value":"0.8","title":"Set face","unit":"m"},"tp":{"value":"13","title":"Period","unit":"s"},"dpm":{"value":"S","title":"Swell dir","unit":"°"},"windma":{"value":"E 12","title":"Wind","unit":"kts"},"gstma":{"value":"16","title":"Gusts","unit":"kts"}}}
}
现在,我不太明白我怎么能只检索一些信息(例如膨胀)。
是否可以用 AS3 代码向我展示,我该怎么做? (在这个例子中,我们可以看到膨胀是“0.4 m @ 13 s”)
我想做的事情的例子:
function(searchTheSwell){
var swell_AnseVata;
swell_AnseVata =.... ?
info_txt.text = swell_AnseVata;
}
如果您使用浏览器的开发人员工具,您会看到正在访问一个 PHP 文件以获取信息。它从 http://www.swellmap.co.nz/ajr.php?r=
开始,您需要找到它为您说明的内容。现在要查看内容,只需删除 URL 和 &callback=XYZ
的部分,其中 XYZ
将是 link 的任何内容..
1)
以下是如何获取位置数据的示例:
将 &s=ZZZZZ
替换为位置名称,因此如果我想要 Anse Vata
,它将变为 &s=Anse%20Vata
,而 La Nera
将变为 &s=La%20Nera
。因此,对位置名称中的任何 空格 使用 %20
。将 &country=YYY
替换为示例 &country=fra
.
2)
要获取 Anse Vata
的 JSON 数据,请声明您的新字符串变量以稍后保存 JSON 文本,然后只需使用 AS3 中的 URLStream 来加载 link(在浏览器选项卡中打开以检查内容):
http://www.swellmap.co.nz/ajr.php?r=plugin&a=Surfing&s=Anse%20Vata&country=nz&swellmap=1&country=ncd&swellmap=1&_=1460963404274
在 URLStream 的 Event Complete
侦听器函数中,您只需使用(示例)myString = e.target.data;
。然后在您的 myString
上使用 JSON 解析器,或者您自己使用字符串函数(例如 indexOf
进行单词搜索)手动完成。
3) 如果你打开上面的 link in an new tab 你会看到你需要的 JSON 条目解析。
- 膨胀:
"hs_sw":{"value":"0.4","title":"Swell","unit":"m"}
并且
提取 @ 13 s
期间使用:
"tp":{"value":"13","title":"Period","unit":"s"}
- 风:
"windma":{"value":"E 12","title":"Wind","unit":"kts"}
- 图标:
"summary":"<img class='wx-summary'
src='http:\/\/www.swellmap.co.nz\/style\/img\/weathericons\/suncloud.png'
您必须清理图标 links,使其变为例如:
http://www.swellmap.co.nz/style/img/weathericons/suncloud.png
编辑:
下面的代码从 JSON 字符串中提取预期的信息。只需将 &s=
替换为任何其他位置(例如:&s=Ilot%20Tenia
),它就会提取 Swell、Wind 和 Icon URL 条目...
var myURL : String = "http://www.swellmap.co.nz/ajr.php?r=plugin&a=Surfing&s=Anse%20Vata&country=nz&swellmap=1&country=ncd&swellmap=1&_=1460963404274";
var URL_Req : URLRequest = new URLRequest( myURL );
var URL_load:URLLoader = new URLLoader();
URL_load.addEventListener(Event.COMPLETE, completeHandler);
try { URL_load.load( URL_Req ); }
catch (error:Error)
{ trace("Could not load - Please check URL is correct : " + error.message); }
var idx_start : int = 0; var idx_end : int = 0;
var str_Swell : String = "";
var str_Swell_Period : String = "";
var str_Swell_Dir : String = "";
var str_Wind : String = ""; var url_Icon : String = "";
function completeHandler(e : Event):void
{
//var myData : Object = JSON.parse(e.target.data);
//for each (var s:* in myData) { trace("key:",s,"value:",myData[s]); }
var myString : String = String(e.target.data);
//trace ( "myString : " + myString);
//# Get Swell
idx_start = myString.indexOf("\"hs_sw\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Swell = myString.substring(idx_start + 18, idx_end-1);
str_Swell = str_Swell + " m";
//trace ("Swell : " + str_Swell );
//# Get Direction (for Swell)
idx_start = myString.indexOf("\"dpm\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Swell_Dir = myString.substring(idx_start + 16, idx_end-1);
//trace ("Swell dir : " + str_Swell_Dir );
//# Get time Period (for Swell)
idx_start = myString.indexOf("\"tp\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Swell_Period = myString.substring(idx_start + 15, idx_end-1);
str_Swell_Period = " @ " + str_Swell_Period + " s";
//trace ("Period : " + string_Period );
//# Join Swell Direction, Size & Period entries into one sentence
str_Swell = str_Swell_Dir + " " + str_Swell + str_Swell_Period;
trace ("Swell : " + str_Swell );
//# Get Wind
idx_start = myString.indexOf("\"windma\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Wind = myString.substring(idx_start + 19, idx_end-1);
str_Wind = str_Wind + " kts";
trace ("Wind : " + str_Wind );
//# get Image URL
idx_start = myString.indexOf("\'wx-summary\'" , 0 );
idx_end = myString.indexOf("'" , idx_start + 18 );
url_Icon = myString.substring(idx_start + 18, idx_end);
url_Icon = url_Icon.replace(/\/g, "");
trace ("URL : " + url_Icon );
//# load image using : new URLRequest (url_Icon);
}
有这个网站:http://www.swellmap.co.nz/,我想让我的 AS3 代码去获取一些信息并将其显示为 flash。
如果我不拥有该网站,可以吗?
例子:
我想在我的 AS3 代码中显示这些信息。这可能吗 ?我能怎么做 ?
感谢您的帮助,
编辑
感谢 VC.One 的完整答案我已经成功地将信息粘贴到一个字符串中。
这是我所做的:
var myString:String;
var request:URLRequest = new URLRequest("http://www.swellmap.co.nz/ajr.php?r=plugin&a=Surfing&s=Anse%20Vata&country=nz&swellmap=1&country=ncd&swellmap=1&_=1460963404274");
var loader:URLLoader = new URLLoader();
loader.load(request);
loader.addEventListener(Event.COMPLETE,weatherLoaded);
function weatherLoaded(e:Event):void{
myString = e.target.data;
trace(myString); //output is {"tides":"High: 05:40 am (1.32 m); Low: 12:10 pm (0.57 m); High: 06:10 pm (1.19 m); ","seatemp":"27°C","forecastdate":"17h","rating":"<img src='http:\/\/www.swellmap.co.nz\/style\/img\/weathericons\/1r.png' alt='Poor conditions' title='Poor conditions' \/>","rating_class":"<span class='badge badge-important' alt='Poor conditions' title='Poor conditions'>1<\/span>","summary":"<img class='wx-summary' src='http:\/\/www.swellmap.co.nz\/style\/img\/weathericons\/suncloud.png' title='Sunny with some cloud' \/>","title":"Anse Vata","smaplink":"http:\/\/www.swellmap.co.nz\/surfing\/new-caledonia\/anse-vata","vars":{"hs_sw":{"value":"0.4","title":"Swell","unit":"m"},"hs":{"value":"0.6","title":"Wave","unit":"m"},"wface":{"value":"0.8","title":"Set face","unit":"m"},"tp":{"value":"13","title":"Period","unit":"s"},"dpm":{"value":"S","title":"Swell dir","unit":"°"},"windma":{"value":"E 12","title":"Wind","unit":"kts"},"gstma":{"value":"16","title":"Gusts","unit":"kts"}}}
}
现在,我不太明白我怎么能只检索一些信息(例如膨胀)。 是否可以用 AS3 代码向我展示,我该怎么做? (在这个例子中,我们可以看到膨胀是“0.4 m @ 13 s”)
我想做的事情的例子:
function(searchTheSwell){
var swell_AnseVata;
swell_AnseVata =.... ?
info_txt.text = swell_AnseVata;
}
如果您使用浏览器的开发人员工具,您会看到正在访问一个 PHP 文件以获取信息。它从 http://www.swellmap.co.nz/ajr.php?r=
开始,您需要找到它为您说明的内容。现在要查看内容,只需删除 URL 和 &callback=XYZ
的部分,其中 XYZ
将是 link 的任何内容..
1)
以下是如何获取位置数据的示例:
将 &s=ZZZZZ
替换为位置名称,因此如果我想要 Anse Vata
,它将变为 &s=Anse%20Vata
,而 La Nera
将变为 &s=La%20Nera
。因此,对位置名称中的任何 空格 使用 %20
。将 &country=YYY
替换为示例 &country=fra
.
2)
要获取 Anse Vata
的 JSON 数据,请声明您的新字符串变量以稍后保存 JSON 文本,然后只需使用 AS3 中的 URLStream 来加载 link(在浏览器选项卡中打开以检查内容):
http://www.swellmap.co.nz/ajr.php?r=plugin&a=Surfing&s=Anse%20Vata&country=nz&swellmap=1&country=ncd&swellmap=1&_=1460963404274
在 URLStream 的 Event Complete
侦听器函数中,您只需使用(示例)myString = e.target.data;
。然后在您的 myString
上使用 JSON 解析器,或者您自己使用字符串函数(例如 indexOf
进行单词搜索)手动完成。
3) 如果你打开上面的 link in an new tab 你会看到你需要的 JSON 条目解析。
- 膨胀:
"hs_sw":{"value":"0.4","title":"Swell","unit":"m"}
并且 提取@ 13 s
期间使用:"tp":{"value":"13","title":"Period","unit":"s"}
- 风:
"windma":{"value":"E 12","title":"Wind","unit":"kts"}
- 图标:
"summary":"<img class='wx-summary' src='http:\/\/www.swellmap.co.nz\/style\/img\/weathericons\/suncloud.png'
您必须清理图标 links,使其变为例如:http://www.swellmap.co.nz/style/img/weathericons/suncloud.png
编辑:
下面的代码从 JSON 字符串中提取预期的信息。只需将 &s=
替换为任何其他位置(例如:&s=Ilot%20Tenia
),它就会提取 Swell、Wind 和 Icon URL 条目...
var myURL : String = "http://www.swellmap.co.nz/ajr.php?r=plugin&a=Surfing&s=Anse%20Vata&country=nz&swellmap=1&country=ncd&swellmap=1&_=1460963404274";
var URL_Req : URLRequest = new URLRequest( myURL );
var URL_load:URLLoader = new URLLoader();
URL_load.addEventListener(Event.COMPLETE, completeHandler);
try { URL_load.load( URL_Req ); }
catch (error:Error)
{ trace("Could not load - Please check URL is correct : " + error.message); }
var idx_start : int = 0; var idx_end : int = 0;
var str_Swell : String = "";
var str_Swell_Period : String = "";
var str_Swell_Dir : String = "";
var str_Wind : String = ""; var url_Icon : String = "";
function completeHandler(e : Event):void
{
//var myData : Object = JSON.parse(e.target.data);
//for each (var s:* in myData) { trace("key:",s,"value:",myData[s]); }
var myString : String = String(e.target.data);
//trace ( "myString : " + myString);
//# Get Swell
idx_start = myString.indexOf("\"hs_sw\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Swell = myString.substring(idx_start + 18, idx_end-1);
str_Swell = str_Swell + " m";
//trace ("Swell : " + str_Swell );
//# Get Direction (for Swell)
idx_start = myString.indexOf("\"dpm\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Swell_Dir = myString.substring(idx_start + 16, idx_end-1);
//trace ("Swell dir : " + str_Swell_Dir );
//# Get time Period (for Swell)
idx_start = myString.indexOf("\"tp\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Swell_Period = myString.substring(idx_start + 15, idx_end-1);
str_Swell_Period = " @ " + str_Swell_Period + " s";
//trace ("Period : " + string_Period );
//# Join Swell Direction, Size & Period entries into one sentence
str_Swell = str_Swell_Dir + " " + str_Swell + str_Swell_Period;
trace ("Swell : " + str_Swell );
//# Get Wind
idx_start = myString.indexOf("\"windma\":" , 0 );
idx_end = myString.indexOf("," , idx_start + 1 );
str_Wind = myString.substring(idx_start + 19, idx_end-1);
str_Wind = str_Wind + " kts";
trace ("Wind : " + str_Wind );
//# get Image URL
idx_start = myString.indexOf("\'wx-summary\'" , 0 );
idx_end = myString.indexOf("'" , idx_start + 18 );
url_Icon = myString.substring(idx_start + 18, idx_end);
url_Icon = url_Icon.replace(/\/g, "");
trace ("URL : " + url_Icon );
//# load image using : new URLRequest (url_Icon);
}