ActionScript 3
서버에서 데이터 보내기 및 받기
수색…
플래시 요청하기
URLRequest
및 URLLoader
클래스는 Flash에서 외부 리소스에 대한 요청을 수행하기 위해 함께 작동합니다. URLRequest
는 요청에 대한 정보 (예 : 요청 본문 및 요청 메서드 유형)를 정의하며 URLLoader
이를 참조하여 실제 요청을 수행하고 자원에서 응답을 받으면 알림을받는 방법을 제공합니다.
예:
var request:URLRequest = new URLRequest('http://stackoverflow.com');
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, responseReceived);
loader.load(request);
function responseReceived(event:Event):void {
trace(event.target.data); // or loader.data if you have reference to it in
// this scope.
}
요청에 변수 추가하기
URLVariables
클래스를 사용하면 보낼 데이터를 URLRequest
와 함께 정의 할 수 있습니다.
예:
var variables:URLVariables = new URLVariables();
variables.prop = "hello";
variables.anotherProp = 10;
var request:URLRequest = new URLRequest('http://someservice.com');
request.data = variables;
URLLoader
를 통해 요청을 보내거나 navigateToURL
사용하여 쿼리 문자열에 첨부 된 변수를 사용하여 요청 URL을 열 navigateToURL
있습니다.
HTTP 메소드 변경 (GET, POST, PUT 등)
URLRequestMethod
클래스에는 만들 수있는 다양한 요청 유형에 대한 상수가 들어 있습니다. 이러한 상수는 URLRequest
의 method
속성에 할당됩니다.
var request:URLRequest = new URLRequest('http://someservice.com');
request.method = URLRequestMethod.POST;
AIR 런타임 외부에서는
GET
및POST
만 사용할 수 있습니다.
내 응답 데이터는 항상 null이며, "비동기"는 무엇을 의미합니까?
Flash가 외부 소스에서 데이터를 요청하면 해당 작업은 비동기 입니다. 이것이 무엇을 의미하는지에 대한 가장 기본적인 설명은 데이터가 백그라운드에서로드되고 이벤트가 수신 될 때 Event.COMPLETE
할당 한 이벤트 처리기를 트리거한다는 것입니다. 이는 애플리케이션 수명주기의 어느 시점에서나 발생할 수 있습니다.
귀하의 데이터는 즉시 호출 한 후 사용할 수 없습니다 load()
온 URLLoader
. 당신은에 대한 이벤트 리스너를 연결해야 Event.COMPLETE
거기 반응과 상호 작용합니다.
var request:URLRequest = new URLRequest('http://someservice.com');
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, responseReceived);
loader.load(request);
trace(loader.data); // Will be null.
function responseReceived(event:Event):void {
trace(loader.data); // Will be populated with the server response.
}
trace(loader.data); // Will still be null.
setTimeout
또는 이와 유사한 것을 사용하는 것과 같은 작은 트릭으로이 문제를 해결할 수는 없습니다.
setTimeout(function() {
trace(loader.data); // Will be null if the data hasn't finished loading
// after 1000ms (which you can't guarantee).
}, 1000);
도메인 간 요청
응용 프로그램이 실행되고있는 도메인이 아닌 도메인의 데이터는로드되지 않습니다. 도메인의 루트 (예 : http://somedomain.com/crossdomain.xml
) 또는 다른 도메인의 XML 크로스 도메인 정책 Security.loadPolicyFile()
하여 대상을 지정할 수 있습니다. crossdomain.xml 파일은 서버에 Flash 응용 프로그램의 데이터를 요청할 수있는 도메인을 지정할 수있는 파일입니다.
가장 관대 한 crossdomain.xml의 예 :
<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
프로덕션 환경 에서는이 예제 를 사용하지 말고 보다 제한적인 인스턴스를 사용하십시오.
보다 제한적인 특정 crossdomain.xml은 다음과 같이 보입니다 :
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only" />
<allow-access-from domain="*.domain.com" to-ports="80,843,8011" />
<allow-access-from domain="123.123.123.123" to-ports="80,843,8011" />
</cross-domain-policy>
자원:
- crossdomain 정책 파일 사양 입니다.