2013-04-15 2 views
0

Google에서 UrlLoader를 사용하여 일부 데이터를로드하는 코드가 있습니다.이 코드는 google.com에서 작동하지 않지만 stil은 google.co.uk와 같은 다른 도메인, google.com에서 로더에서 작동합니다. 데이터는 비어 있지만 브라우저에 URL을로드하면 데이터가 표시되어 서버가 응답하는 것 같습니다. 내 질문에 어떻게 올바른 데이터를 반환합니다 UrlLoader 구성 할 수 있습니다. 다음은 몇 가지 테스트 코드입니다. 주석을 달거나 URL의 주석을 제거하면 작동하는 URL을 확인할 수 있으며, 모든 팁이나 sugesstions은 환영합니다. 편집 :이 코드는 웹 브라우저가 아닌 데스크탑에서 실행되는 Adobe AIR 응용 프로그램의 코드입니다.actionscript3/flash의 UrlLoader 문제

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

는 여기에 힌트 :'http://www.google. co.kr/crossdomain.xml'. – Marty

+0

@ MartyWallace 안녕하세요, 코드가 데스크톱의 AIr에서 실행된다는 것을 잊어 버렸습니다. 보안 예외가 없으므로 문제가 일부 세부 정보/참조와 함께이 질문에 대한 응답을 추가해주십시오. Thx – simion314

답변

0

onComplete 및 오류 기능이 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을 사용하여 작동합니다. (있는 해달라고로) 나는 (내가하지 AIR를하여 SWF를 테스트했기 때문에)를 HTTPStatusEvents을 제거하는 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); 
} 
+0

안녕하세요, 아닙니다. 나는 이렇게 썼습니다. 사람들이 쉽게 복사하고 붙여 넣기 만하면됩니다. 당신도 코드를 시도하고 작동하지 않습니다,이 문제는 HTTP와 관련이 있습니다, 내 생각 엔 – simion314

+0

ok - 편집 내 대답 –

+0

그래서 loader.data를 얻을! = ""? 나는 당신과 같은 코드를 사용했고 여전히 첫 번째 URL을 가진 빈 데이터를 얻었습니다 – simion314

관련 문제