让我的 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&deg;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":"&#xb0;"},"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) 以下是如何获取位置数据的示例:

http://www.swellmap.co.nz/ajr.php?r=plugin&a=Surfing&s=ZZZZZ&country=nz&swellmap=1&country=YYY&swellmap=1&_=1460950764514

&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); 

}