Suche…


Anforderung von Flash

Die URLRequest und URLLoader Klassen arbeiten zusammen, um Anforderungen von Flash an externe Ressourcen zu stellen. Die URLRequest definiert Informationen über die Anforderung, z. B. den Anforderungshauptteil und den Anforderungsmethodentyp, und der URLLoader verweist darauf, um die tatsächliche Anforderung auszuführen und eine Benachrichtigung bereitzustellen, wenn eine Antwort von der Ressource empfangen wird.

Beispiel:

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.
}

Hinzufügen von Variablen zu Ihrer Anfrage

Mit der URLVariables Klasse können Sie Daten definieren, die zusammen mit einer URLRequest gesendet werden URLRequest .

Beispiel:

var variables:URLVariables = new URLVariables();

variables.prop = "hello";
variables.anotherProp = 10;

var request:URLRequest = new URLRequest('http://someservice.com');
request.data = variables;

Sie können entweder die Anfrage über einen schicken URLLoader oder die Anfrage - URL mit dem in der Abfragezeichenfolgeflag mit beiliegenden Variablen öffnen navigateToURL .

Ändern der HTTP-Methode (GET, POST, PUT usw.)

Die URLRequestMethod Klasse enthält Konstanten für die verschiedenen Anforderungstypen, die Sie URLRequestMethod können. Diese Konstanten werden werden , um zugewiesen URLRequest ‚s method Eigenschaft:

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

Beachten Sie, dass nur GET und POST außerhalb der AIR-Laufzeitumgebung verfügbar sind.

Meine Antwortdaten sind immer null. Was bedeutet "asynchron"?

Wenn Flash Daten von einer externen Quelle anfordert, ist dieser Vorgang asynchron . Die grundlegendste Erklärung dafür ist, dass die Daten "im Hintergrund" Event.COMPLETE und den Event-Handler Event.COMPLETE Sie Event.COMPLETE beim Empfang Event.COMPLETE . Dies kann zu jeder Zeit während der Lebensdauer Ihrer Anwendung passieren.

Ihre Daten stehen NICHT unmittelbar nach dem Aufruf von load() auf Ihrem URLLoader . Sie müssen einen Event-Listener für Event.COMPLETE und mit der Antwort dort interagieren.

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.

Mit kleinen Tricks wie setTimeout oder ähnlichem kann man das nicht setTimeout :

setTimeout(function() {
    trace(loader.data); // Will be null if the data hasn't finished loading
                        // after 1000ms (which you can't guarantee).
}, 1000);

Domainübergreifende Anforderungen

Flash lädt keine Daten von einer anderen Domäne als der, in der Ihre Anwendung ausgeführt wird, es sei denn, diese Domäne hat eine XML-Crossdomain-Richtlinie, entweder im Stammverzeichnis der Domäne (z. B. http://somedomain.com/crossdomain.xml ) oder an einem anderen Ort kann mit Security.loadPolicyFile() zielen. In der crossdomain.xml-Datei können Sie Domänen angeben, die Ihren Server nach Daten aus einer Flash-Anwendung fragen können.

Beispiel für die permissivste crossdomain.xml:

<?xml version="1.0" ?>
<cross-domain-policy>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

Beachten Sie, dass dieses Beispiel nicht in Produktionsumgebungen verwendet werden sollte. Verwenden Sie eine restriktivere Instanz.

Eine restriktivere spezifische crossdomain.xml sieht beispielsweise so aus:

<?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>

Ressourcen:



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow