我有一些代码使用来自谷歌的UrlLoader加载一些数据,此代码停止为google.com工作,但stil适用于其他域名,如google.co.uk,在google.com上,loader.data为空但如果我在浏览器中加载该URL我可以看到数据,因此服务器似乎响应。 我的问题是如何配置UrlLoader以便它返回正确的数据。 这是一些测试代码,你可以评论/取消注释网址来检查工作网址,欢迎任何提示或sugesstions thx。 编辑:此代码来自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);
}
}
答案 0 :(得分:0)
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);
}