【问题标题】:UrlLoader issue in actionscript3/flashactionscript3/flash 中的 UrlLoader 问题
【发布时间】:2013-04-15 07:59:32
【问题描述】:

我有一些代码使用来自 google 的 UrlLoader 加载一些数据,此代码停止为 google.com 工作,但仍适用于 google.co.uk 等其他域,在 google.com 上 loader.data 为空,但如果我在浏览器中加载该 url 我可以看到数据,因此服务器似乎响应了。 我的问题是如何配置 UrlLoader 以便它返回正确的数据。 这是一些测试代码,您可以评论/取消评论网址以检查工作网址,欢迎任何提示或建议谢谢。 编辑:此代码来自 Adob​​e AIR 应用程序,该应用程序在桌面上运行,而不是在 Web 浏览器内。

public static function testPrediction():void{
        var _loader:URLLoader=new URLLoader();
        _loader.addEventListener(Event.COMPLETE,onComplete);
        _loader.addEventListener(IOErrorEvent.IO_ERROR, err);
        _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, err);
        _loader.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS,err);
        _loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,err);
        _loader.dataFormat=URLLoaderDataFormat.TEXT;
        //this does not work
        var url:String="http://www.google.com/complete/search?js=true&output=toolbar&hl=en&q=ubuntu";

        //this link works
        //var url:String="http://www.google.co.uk/complete/search?js=true&output=toolbar&hl=en&q=ubuntu";

        var urlRequest:URLRequest=new URLRequest(url);
        urlRequest.followRedirects=true;
        urlRequest.userAgent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0";

        _loader.load(urlRequest);
        function onComplete(e:Event):void{
            var loader:URLLoader=e.target as URLLoader;
            trace(loader.data);
        }
        function err(e:Event):void{
            trace(e);
        }
    }

【问题讨论】:

  • 这里有一个提示:http://www.google.com/crossdomain.xml.
  • @MartyWallace 嗨,我忘了提到代码在桌面上的 AIr 中运行,并且我没有遇到任何安全异常,如果您仍然认为您知道这个问题,请添加对此问题的回复一些细节/参考?谢谢

标签: actionscript-3 flash http


【解决方案1】:

onComplete 和 err 函数在 testPrediction 函数体内 - 这可能会导致意外行为。假设这不是您的错字,它们应该在 testPrediction 之外:

public static function testPrediction():void{
    var _loader:URLLoader=new URLLoader();
    _loader.addEventListener(Event.COMPLETE,onComplete);
    _loader.addEventListener(IOErrorEvent.IO_ERROR, err);
    _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, err);
    _loader.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS,err);
    _loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,err);
    _loader.dataFormat=URLLoaderDataFormat.TEXT;
    //this does not work
    var url:String="http://www.google.com/complete/search?js=true&output=toolbar&hl=en&q=ubuntu";
    //this link works
    //var url:String="http://www.google.co.uk/complete/search?js=true&output=toolbar&hl=en&q=ubuntu";
    var urlRequest:URLRequest=new URLRequest(url);
    urlRequest.followRedirects=true;
    urlRequest.userAgent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0";
    _loader.load(urlRequest);
}

static function onComplete(e:Event):void{
    var loader:URLLoader=e.target as URLLoader;
    trace(loader.data);
}
static function err(e:Event):void{
    trace(e);
}

编辑:

此代码适用于我使用任一 URL。我删除了 HTTPStatusEvents(因为我正在测试 swf,而不是 AIR)并从 URLRequest 中删除了 followRedirects 和 userAgent 设置(因为它们不存在):

function testPrediction():void
{
var _loader:URLLoader = new URLLoader();
_loader.addEventListener(Event.COMPLETE, onComplete);
_loader.addEventListener(IOErrorEvent.IO_ERROR, err);
_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, err);
_loader.dataFormat = URLLoaderDataFormat.TEXT;
//var url:String = "http://www.google.com/complete/search?js=true&output=toolbar&hl=en&q=ubuntu";
var url:String = "http://www.google.co.uk/complete/search?js=true&output=toolbar&hl=en&q=ubuntu";
var urlRequest:URLRequest = new URLRequest(url);
_loader.load(urlRequest);
}

function onComplete(e:Event):void
{
var loader:URLLoader = e.target as URLLoader;
trace(loader.data);
}
function err(e:Event):void 
{
trace(e);
}

【讨论】:

  • 嗨,不是这样,我是这样写的,所以这里的人很容易复制粘贴然后运行它。我也试过你的代码,但不工作,这个问题与 http 相关,我认为
  • 所以你得到了 loader.data!="" ?我使用了与您相同的代码,但第一个 url 仍然得到一个空数据
  • 是的,两个网址的数据相同 - ...等
  • 这很奇怪,因为我和很多用户都有同样的问题,你是在浏览器中运行代码吗?是一个 AIr 应用程序,您可以将其导出为 .fxp
  • 是的,看起来我的答案是废品;)当作为 AIR 应用程序运行时,我得到的结果和你一样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多