수색…


플래시 요청하기

URLRequestURLLoader 클래스는 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 클래스에는 만들 수있는 다양한 요청 유형에 대한 상수가 들어 있습니다. 이러한 상수는 URLRequestmethod 속성에 할당됩니다.

var request:URLRequest = new URLRequest('http://someservice.com');
request.method = URLRequestMethod.POST;

AIR 런타임 외부에서는 GETPOST 만 사용할 수 있습니다.

내 응답 데이터는 항상 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>

자원:



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow