데이터가 도착하고 나면, 주문자의 손에 데이터가 들어간다. ...urlLoader.data
2. urlLoader. data로 도착한 Data가 들어간다.
3.URL 경로명에는 URLRequest가 들어간다.
4.URLRequest는 택배아저씨정도로 이해하면 된다.
5.3.0에서는 URL을 연결할 경우 항상 URLRequest로 링크를 걸어준다.
(참고) 이미지를 로드할 때는 Loader, 데이터를 로드 할 때는 URLLoader를 쓴다 비교하여 공부해본다.
--------------------------------------------------------------------------------------------------------------------------
[public 속성]
1) bytesLoaded : uint = 0
== > 로드 작업 중 지금까지 로드한 바이트 수를 나타냅니다.
2) bytesTotal : uint = 0
==
> 다운로드한 데이터의 총 바이트 수를 나타냅니다. 이 속성은 로드 작업이 진행 중인 경우에는 0을 포함하고 작업이
완료되면 채워집니다. 또한 Content-Length 머리글이 누락되면 총 바이트 수가 확정되지 않습니다.
3) data : *
== > 로드 작업으로 수신된 데이터입니다. 이 속성은 로드 작업이 완료된 때만 채워집니다. 데이터의 형식은 dataFormat
속성의 설정에 따라 달라집니다.
**
dataFormat
속성이 URLLoaderDataFormat.TEXT
인 경우 수신된 데이터는 로드된 파일의 텍스트가 포함된 문자열입니다.
dataFormat
속성이 URLLoaderDataFormat.BINARY
인 경우 수신된 데이터는 원시 이진 데이터가 포함된 ByteArray 객체입니다.
dataFormat
속성이 URLLoaderDataFormat.VARIABLES
인 경우 수신된 데이터는 URL 인코딩된 변수가 포함된 URLVariables 객체입니다.
**
4) dataFormat : String = "text"
== >
다운로드하는 데이터를 텍스트(URLLoaderDataFormat.TEXT), 원시 이진
데이터(URLLoaderDataFormat.BINARY) 또는 URL 인코딩된
변수(URLLoaderDataFormat.VARIABLES) 중 어떤 형식으로 수신할 것인지 제어합니다.
--------------------------------------------------------------------------------------------------------------------------
[public 메서드]
1) URLLoader(request:URLRequest = null)
== > URLLoader 객체를 만듭니다.
2) close():void
== > 진행 중인 로드 작업을 닫습니다. 진행 중인 모든 로드 작업이 즉시 종료됩니다.
3) load(request:URLRequest):void
== > 지정된 URL에서 데이터를 보내거나 로드합니다. 데이터는 dataFormat
속성에 지정한 값에 따라 텍스트, 원시 이진 데이터 또는 URL 인코딩된 변수로 수신할 수 있습니다. dataFormat
속성의 기본값은 텍스트입니다. 지정된 URL로 데이터를 보내려는 경우 URLRequest 객체의 data
속성을 지정할 수 있습니다.
**
이벤트
- complete:Event — 데이터가 성공적으로 로드되면 전달됩니다.
- httpStatus:HTTPStatusEvent — HTTP에 의해 액세스되고 현재의 Flash Player 환경이 상태 코드 수신을 지원하는 경우 complete 또는 error 이벤트 외에도 이러한 이벤트를 수신할 수 있습니다.
- ioError:IOErrorEvent — 로드 작업을 완료할 수 없습니다.
- progress:ProgressEvent — 다운로드 작업이 진행되어 데이터가 수신될 때 전달됩니다.
- securityError:SecurityErrorEvent — 로드 작업에서 호출자의 보안 샌드박스 외부에 있는 서버의 데이터를 검색하려고 시도했습니다. 이 오류는 해당 서버의 정책 파일을 사용하여 해결할 수 있습니다.
- open:Event — 로드 작업이 시작될 때 전달됩니다.
**
오류
- ArgumentError — URLRequest.requestHeader 객체는 금지된 특정 HTTP 요청 헤더를 포함할 수 없습니다. 자세한 내용은 URLRequestHeader 클래스 설명을 참조하십시오.
- MemoryError —
이 오류는 다음과 같은 이유로 발생할 수 있습니다. 1) Flash Player에서 URLRequest.data 매개 변수를
UTF8에서 MBCS로 변환할 수 없습니다. load()에 전달된 URLRequest 객체가 GET 작업을 수행하도록 설정되고
System.useCodePage가 true로 설정된 경우 이 오류가 발생합니다. 2) Flash Player에서 POST
데이터를 위한 메모리를 할당할 수 없습니다. load에 전달된 URLRequest 객체가 POST 작업을 수행하도록 설정된 경우
이 오류가 발생합니다.
- SecurityError — 신뢰할 수 없는 로컬 SWF
파일은 인터넷 통신이 불가능합니다. 이 SWF 파일을 네트워킹 가능한 로컬 파일(local-with-networking) 또는
신뢰할 수 있는 파일로 다시 규정하면 이 오류를 해결할 수 있습니다.
- TypeError — 요청 매개 변수의 값이나 전달된 URLRequest 객체의 URLRequest.url 속성이 null입니다.
**
--------------------------------------------------------------------------------------------------------------------------
[이벤트]
1) complete
== > 수신된 모든 데이터가 디코딩된 후 URLLoader 객체의 data 속성에 배치되면 전달됩니다.
2) httpStatus
== > URLLoader.load() 호출로 HTTP를 통해 데이터 액세스를 시도하고 현재의 Flash Player 환경에서 이 요청에 대한 상태 코드를 감지 및 반환할 수 있을 때 전달됩니다.
3) ioError
== > URLLoader.load() 호출로 치명적인 오류가 발생하여 다운로드가 중단되면 전달됩니다.
4) open
== > URLLoader.load() 메서드 호출에 이어 다운로드 작업이 시작될 때 전달됩니다.
5) progress
== > 다운로드 작업이 진행되어 데이터가 수신될 때 전달됩니다.
6) securityError
== > URLLoader.load() 호출로 보안 샌드박스 외부의 서버로부터 데이터 로드를 시도할 때 전달됩니다.
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class URLLoaderTest1 extends Sprite
{
// URLLoader : 주문자
// 데이터가 도착하고나면, 주문자 손에 데이터가 들어간다.. urlLoader.data
private var urlLoader: URLLoader = new URLLoader();
public function URLLoaderTest1()
{
super();
// 강제로 오류창을 뜨게하는 방법
// throw new Error( "밥줘~!!" );
urlLoader.addEventListener( Event.COMPLETE, onComplete );
// 비동기식 예외처리 ( IOError )
urlLoader.addEventListener( IOErrorEvent.IO_ERROR, onIOError );
urlLoader.load( new URLRequest( "./sample3.xml" ) ); //error실험 전에 기존의 xml파일 이름을 살짝 변경한다.
}
private function onIOError( e: IOErrorEvent ): void
{
trace( "파일을 찾을 수 없어용...!!" );
}
private function onComplete( e: Event ): void
{
//trace(urlLoader.data); 이와같이 데이터가 넘어오면 문자열이긴 하지만 원래는 XML파일 이므로
//가져온 데이터를 XML로 변환해야 한다.
//아래와 같은 것을 "동기식 예외처리"라고 한다. (try~~~~~catch)
// {동기식} 예외처리 <--> 비동기식 예외처리
try{
var xml: XML = new XML( urlLoader.data );
trace( xml.toXMLString() );
}catch( e: Error ){
trace( "XML 형식이 틀렸습니다." );
}
}
} // class
}//package
파일을 찾을 수 없어용...!!
throw new Error ( "냥냥"); <== 에러 던지기.. (강제로 오류창을 뜨도록 하는 방법)
1. 동기식 예외처리 ===> try{} catch(e:Error){} 로 잡는다... ( xml 파일의 내용이 틀렸을 경우 )
2. 비동기식 예외처리 ===> urlLoader.addEventListener( IOErrorEvent.IO_ERROR, onIOError ); 에러를 던진다...
( IO 에러를 잡는다... 파일이 없거나( url 오류 ), 네트웍이 안될 경우 )
1.컴파일 타임 에러 ( 컴파일:as --->swf파일을 만드는 과정 )
swf 파일이 만들어지는 과정에서 오류가 나서 swf 파일 자체를 만들 수 없는 상태 (깔끔하게 오류를 인지할 수 있다.)
2.런타임 에러
swf 파일은 만들어진 상태이나 과정에서 알수 없는 오류가 생겨난 상태 (어디가 틀렸는지 모르므로 심각한상태 )
런타임 에러에는 try-catch 를 써서 예외처리를 해준다.
try-catch는 xml을 시도(try) 했을때 만약 오류가 생기면(catch) 플래쉬에서 제공하는 멋없는 창을 보여주는 것이 아니라 내가
정한 문구를 보여주도록 하는 방법이다.
xml파일에 문제가 생겼을 경우는 xml파일이 아님에도 (오류가 났으므로) xml파일로 변환하려고 하여 문제가 생기는 것이다.