2009-12-24 10 views
0

Flex 어플리케이션을 위해 HTTP를 통해 바이너리 데이터를 가져 오려고 시도하면서 몇 가지 걸림돌이 발생했습니다. HTTPService는 바이너리 데이터를 잘 처리하지 못했지만 사람들은 URLLoader를 사용한다고 말했습니다. 하지만 URLLoader에는 HTTPService에서 제공하는 멋진 AsyncToken/IResponder 인터페이스가 없습니다.URLLoader가 AsyncToken을 반환하도록 만드는 방법?

그래서 일부 검색을 수행했지만 URLLoader를 확장하여이 기능을 제공하지 못했습니다. 내가 나서서 그것을 자신을 자상을했다 : http://pastebin.com/d7369d0e0

은 기본적으로는은 URLLoader와 AsyncToken 관련을 래핑하고은 URLLoader 결과 /를 AsyncToken 관련에 제기 얻을 결함에, COMPLETE IO_ERROR 및 SECURITY_ERROR 이벤트를 매핑합니다.

기본 사용법 :

var tidbitLoader:AsyncURLLoader = new AsyncURLLoader(); 
tidbitLoader.dataFormat = URLLoaderDataFormat.BINARY; 

var asyncToken:AsyncToken = tidbitLoader.load(new URLRequest("http://localhost/SampleTidbit.swf")); 

asyncToken.addResponder(this); 

public function result(resultEvent:Object):void 
{ 
    trace("result"); 
} 

public function fault(faultEvent:Object):void 
{ 
    var fault:FaultEvent = faultEvent as FaultEvent; 
    trace("fault: " + fault.toString()); 
} 

이 문제를 접근하는 올바른 방법인가? 기존 솔루션이 있습니까? 나는 피드백을 듣고 싶다.

감사합니다,

KARTHIK

+0

그래서 읽고 자하는 바이너리 데이터는 SWF이지만 SWF를 실행하지 않으려합니다 (예 : SWFLoader 또는 Loader does?) resultFormat을 텍스트로 설정하여 HTTPService를 사용하려고 시도 했습니까? –

+0

안녕하세요 James, HTTPService를 텍스트로 사용하려고했지만 SWFLoader.source를 해당 호출의 결과로 설정하면 SWF는 그렇지 않습니다. 로드! 내 비동기로 시도하면 URLLoader를 호출하고 결과로 ByteArray를 다시 얻으면 작동합니다. – Karthik

+0

아마도 writeUTFBytes 같은 것을 사용하여 ByteArray를 만들어야 할 필요가 있을까요? –

답변

1

HTTPServiceresultFormat = text를 사용하여 다음 새 ByteArray를 만들고 ByteArrayHTTPService 결과의 텍스트를 작성하는 writeUTFBytes를 호출합니다. 그런 다음 ByteArraySWFLoader.source으로 설정하거나 Loader.loadBytes으로 전화를 걸 수 있습니다.

0

제임스는 AIR 1.5 앱으로 솔루션을 시도했지만, SWFLoader.source에 ByteArray를 설정하면 다음 오류가 발생합니다. 어떤 아이디어? 나는 AIR이 HTTP 헤더를 변경하는 것을 어딘가에서 읽은 것 같아 이것이 원인 일 수 있습니까? 벤 감사합니다.

[DEBUG] mx.messaging.Channel 'direct_http_channel'채널 전송 메시지 : (mx.messaging.messages :: HTTPRequestMessage) # 0 = 본체 (개체) # 1 클라이언트 ID = (NULL) 의 contentType = " 애플리케이션/x-www-form-urlencoded를 " 대상 ="DefaultHTTP " 헤더 = (개체) # 2 httpHeaders = (개체) # 3 messageId가 ="3044E76C-CF0E-2D5F-96BE-74CFF62098B0 " 방법 =" GET " recordHeaders = false timestamp = 0 timeToLive = 0 url ="http://www.myurl.com/test.jpg " [정보] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72'프로듀서가 연결되었습니다. [정보] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72'생산자 승인 '3044E76C-CF0E-2D5F-96BE-74CFF62098B0'. [INFO] mx.rpc.http.HTTPService의 디코딩 HTTPService의 응답 [DEBUG] mx.rpc.http.HTTPService의 처리 HTTPService를 응답 메시지 : (mx.messaging.messages ::의 AcknowledgeMessage) # 0 체 = "ÿØÿà 오류 # 2044 : 처리되지 않은 IOErrorEvent :. text = 오류 # 2124 :로드 된 파일이 알 수없는 유형 임