ActionScript 3
सर्वर से डेटा भेजना और प्राप्त करना
खोज…
फ्लैश से एक अनुरोध करना
Flash से बाहरी संसाधनों के लिए अनुरोध करने के लिए URLRequest
और URLLoader
कक्षाएं एक साथ काम करती हैं। 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
लिए querystring में संलग्न चर के साथ अनुरोध URL को खोल सकते हैं।
HTTP मेथड को बदलना (GET, POST, PUT, आदि)
URLRequestMethod
वर्ग में आपके द्वारा किए जाने वाले विभिन्न अनुरोध प्रकारों के लिए स्थिरांक होते हैं। ये स्थिरांक URLRequest
की method
गुण के लिए आवंटित किए जाने हैं:
var request:URLRequest = new URLRequest('http://someservice.com');
request.method = URLRequestMethod.POST;
ध्यान दें कि केवल
GET
औरPOST
AIR रनटाइम के बाहर उपलब्ध हैं।
मेरा प्रतिक्रिया डेटा हमेशा शून्य है, "अतुल्यकालिक" का क्या मतलब है?
जब फ्लैश एक बाहरी स्रोत से डेटा के लिए अनुरोध करता है, तो वह ऑपरेशन अतुल्यकालिक है । इसका सबसे बुनियादी स्पष्टीकरण यह है कि डेटा "पृष्ठभूमि में" लोड होता है और इवेंट हैंडलर को तब ट्रिगर करता है जिसे आप Event.COMPLETE
होने पर Event.COMPLETE
को आवंटित करते हैं। यह आपके आवेदन के जीवनकाल में किसी भी बिंदु पर हो सकता है।
आपका डेटा आपके URLLoader
पर load()
कॉल load()
तुरंत बाद उपलब्ध नहीं होगा । आपको 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);
क्रॉस-डोमेन अनुरोध
जब तक आपके डोमेन में XML क्रॉसडोमेन पॉलिसी नहीं होती है, तब तक डोमेन के रूट के अलावा फ्लैश एक डोमेन से डेटा लोड नहीं करेगा (जैसे http://somedomain.com/crossdomain.xml
) या कहीं और जो आप करते हैं Security.loadPolicyFile()
साथ लक्षित कर सकते हैं। Crossdomain.xml फ़ाइल वह जगह है जहां आप उन डोमेन को निर्दिष्ट कर सकते हैं जो आपके एप्लिकेशन को फ्लैश एप्लिकेशन से डेटा के लिए पूछ सकते हैं।
सबसे अधिक पारगम्य crossdomain.xml का उदाहरण:
<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
ध्यान दें कि इस उदाहरण का उपयोग उत्पादन वातावरण में नहीं किया जाना चाहिए , अधिक प्रतिबंधात्मक उदाहरण का उपयोग करें।
एक अधिक प्रतिबंधक विशिष्ट क्रॉसडोमेन.एक्सएमएल उदाहरण के लिए इस तरह दिखेगा:
<?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>
संसाधन: