简体   繁体   English

ActionScript3 / Flash中的UrlLoader问题

[英]UrlLoader issue in actionscript3/flash

I have some code that loads some data using UrlLoader from google, this code stopped working for google.com but stil works for other domains like google.co.uk , on google.com the loader.data is empty but if I load that url in the browser I can see the data so the server seems to respond. 我有一些代码使用Google的UrlLoader加载了一些数据,该代码停止了google.com的工作,但是stil适用于google.com.uk等其他域,在google.com上,loader.data为空,但是如果我加载该网址在浏览器中,我可以看到数据,因此服务器似乎可以响应。 My question is how can I configure the UrlLoader so it will return the correct data. 我的问题是如何配置UrlLoader,以便它将返回正确的数据。 Here is some test code,you can comment/uncomment the url to check the working url,any tips or sugesstions are welcomed thx. 这是一些测试代码,您可以注释/取消注释URL以检查工作URL,欢迎任何提示或建议。 Edit: this code is from Adobe AIR application that runs on desktop not inside a web browser. 编辑:此代码来自Adobe 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);
        }
    }

onComplete and err functgions are within body of testPrediction function - which may be causing unintended behaviour. onComplete和err函数位于testPrediction函数的主体内-可能会导致意外的行为。 Assuming this isnt a typo on your part, they should be outside of 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);
}

Edit: 编辑:

This code works for me using either URL. 不论使用哪个网址,此代码都对我有效。 I removed the HTTPStatusEvents (because i was testing a swf, not AIR) and removed the followRedirects and userAgent settings from URLRequest (as they dont exist): 我删除了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);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM