Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
 

Пакет flash.net 


В пакете flash.net содержатся функции уровня пакета для открытия нового окна браузера, отправки URL-запроса серверу, а также функции для работы с псевдонимами классов.
Общедоступные методы
 ФункцияОпределено
  
Выполняет поиск класса, у которого ранее был псевдоним, зарегистрированный через вызов метода registerClassAlias().
flash.net
  
navigateToURL(request:URLRequest, window:String = null):void
Открывает или заменяет окно в приложении, которое содержит контейнер Flash Player (обычно браузер).
flash.net
  
registerClassAlias(aliasName:String, classObject:Class):void
Сохраняет класс (тип) объекта при шифровании объекта в формат AMF.
flash.net
  
Отправляет на сервер запрос URL-адреса, но игнорирует ответ.
flash.net
Сведения о функции

getClassByAlias

()функция
public function getClassByAlias(aliasName:String):Class

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Выполняет поиск класса, у которого ранее был псевдоним, зарегистрированный через вызов метода registerClassAlias().

Данный метод не взаимодействует с методом flash.utils.getDefinitionByName().

Параметры

aliasName:String — Искомый псевдоним.

Возвращает
Class — Класс, связанный с данным псевдонимом. Если не будет найдено, будет создано исключение.

Выдает
ReferenceError — Псевдоним не был зарегистрирован.

Связанные элементы API

navigateToURL

()функция 
public function navigateToURL(request:URLRequest, window:String = null):void

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Открывает или заменяет окно в приложении, которое содержит контейнер Flash Player (обычно браузер). В Adobe AIR эта функция открывает URL-адрес в системном веб-обозревателе по умолчанию

Важное примечание о безопасности

Разработчики часто передают функции navigateToURL() значения URL-адресов, полученные из внешних источников, таких как FlashVars. Злоумышленники могут использовать эти внешние источники для таких атак, как выполнение межузловых сценариев. В связи с этим разработчикам следует проверять все URL-адреса перед тем, как передать их этой функции.

Надлежащая проверка данных в отношении URL-адресов может иметь разное значение в зависимости от использования URL-адреса в приложении. К типичным методам проверки данных относится проверка правильности схемы URL-адреса. Например, непреднамеренное разрешение URL-адресов javascript: может привести к выполнению межузловых сценариев. Проверка принадлежности URL-адреса вашему домену позволит избежать использования SWF-файла в качестве перенаправителя людьми, совершающими фишинг-атаки. Для лучшей защиты можно также проверить путь URL-адреса и то, что URL-адрес соответствует рекомендациям RFC

Следующий код является простым примером выполнения проверки данных, которая предусматривает отклонение всех URL-адресов, которые не начинаются с http:// или https:// и проверку принадлежности URL-адреса вашему доменному имени. Этот пример может не подходить для всех web-приложений, поэтому при необходимости следует предусмотреть дополнительную проверку URL-адресов.

     // AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name.
     function checkProtocol (flashVarURL:String):Boolean {
        // Get the domain name for the SWF if it is not known at compile time.
        // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string.
        var my_lc:LocalConnection = new LocalConnection();
        var domainName:String = my_lc.domain;
        // Build the RegEx to test the URL.
        // This RegEx assumes that there is at least one "/" after the
        // domain. http://www.mysite.com will not match.
        var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/");
        var result:Object = pattern.exec(flashVarURL);
        if (result == null || result[1] != domainName || flashVarURL.length >= 4096) {
          return (false);
        }
        return (true);
     }  
     
      

Для локального содержимого, выполняющегося в браузере, вызовы метода navigateToURL(), указывающие псевдо-протокол javascript: (с помощью объекта URLRequest, переданного в качестве первого параметра), допустимы только в том случае, если SWF-файл и рассматриваемая web-страница (если существует) находятся в локальной доверенной изолированной программной среде. В некоторых обозревателях не поддерживается применение протокола javascript с методом navigateToURL(). Вместо этого следует использовать метод call() API-интерфейса ExternalInterface, чтобы вызвать методы JavaScript в рамках закрытой HTML-страницы.

В проигрывателе Flash Player, а также в изолированных программных средах Adobe AIR, отличных от среды приложения, нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).

В приложении Flash Player версии 10 и старше, запущенном в браузере, при использовании этого метода в программных средствах открытие всплывающего окна может не выполняться. Различные браузеры (и конфигурации браузеров) могут блокировать всплывающие окна в любое время; невозможно гарантировать, что какое-либо всплывающее окно будет отображаться. Однако для повышения вероятности открытия всплывающего окна используйте этот метод только в коде, который выполняется в качестве непосредственного результата действия пользователя (например, в обработчике событий для события щелчка мышью или нажатия клавиши).

В приложении Flash Player 10 и более поздней версии при использовании типа содержимого multipart (например, multipart/form-data), в котором содержится загрузка (обозначена параметром filename в заголовке content-disposition в теле оператора POST), к операции POST применяются правила безопасности для загрузок:

  • Операция POST должна быть выполнена в ответ на действие, инициированное пользователем, такое как щелчок мыши или нажатие клавиши.
  • Если операция POST является междоменной (назначением операции POST не является сервер, на котором содержится SWF-файл, отправляющий запрос POST), целевой сервер должен предоставить файл политик URL, в котором разрешен междоменный доступ.

Кроме того, все объекты multipart Content-Type должны иметь допустимый синтаксис (в соответствии со стандартами RFC2046). Если синтаксис является недопустимым, к операции POST применяются правила безопасности, действующие для загрузок.

В среде AIR на мобильных платформах поддерживаются URI-схемы sms: и tel:. В ОС Android также поддерживаются схемы URI vipaccess:, connectpro: и market:. Синтаксис URL-адреса зависит от принятых для платформы соглашений. Например, на платформе Android схема URI должна включать символы в нижнем регистре. При переходе по URL-адресу с использованием одной из этих схем в среде выполнения этот адрес открывается в стандартной программе, предназначенной для обработки схемы. Например, при переходе по адресу tel:+5555555555 открывается программа набора номера телефона с уже введенным номером. Отдельное приложение или служебная программа, например номеронабиратель телефона, должны быть доступными для обработки URL.

Следующий код демонстрирует вызов приложений VIP Access и Connect Pro в ОС Android:

       //Invoke the VIP Access Application.
       navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode"));
     
       //Invoke the Connect Pro Application.
       navigateToURL(new URLRequest("connectpro://"));
     
      

Параметры

request:URLRequest — Объект URLRequest, указывающий URL-адрес, на который необходимо перейти.

В случае с содержимым, выполняющимся в Adobe AIR, при использовании функции navigateToURL() среда выполнения воспринимает URLRequest, использующий метод POST (свойство method которого имеет значение URLRequestMethod.POST), как использование метода GET.

 
window:String (default = null) — Окно обозревателя или HTML-фрейм, в котором будет отображаться документ, указанный в параметре request. Вы можете ввести имя определенного окна или использовать одно из следующих значений:
  • "_self" указывает текущий фрейм в текущем окне.
  • "_blank" определяет новое окно.
  • "_parent" указывает родительский объект текущего фрейма.
  • "_top" указывает фрейм самого верхнего уровня в текущем окне.

Если не будет указано значение для данного параметра, то будет создано новое пустое окно. В автономном проигрывателе можно указать новое окно (_blank) или определенное окно с именем. Другие значения не применяются.

Примечание. Когда код в SWF-файле, запущенном в локальной изолированной программной среде для файловой системы, вызывает функцию navigateToURL() и указывает специальное имя окна для параметра window, имя окна преобразуется в случайное имя. Имя представлено в формате _flashXXXXXXXX, где каждый X представляет случайную шестнадцатеричную цифру. Если в рамках одного сеанса (до закрытия используемого окна браузера) вы снова вызовете эту функцию и определите то же самое имя для параметра window, будет использована та же случайно выбранная строка.


Выдает
IOError — Значением свойства digest объекта request не является null. Свойство digest объекта URLRequest следует задавать только при вызове метода URLLoader.load() во время загрузки SWZ-файла (компонент платформы Adobe).
 
SecurityError — В приложении Flash Player (и в содержимом Adobe AIR, находящемся не в изолированной программной среде приложения) эта ошибка возникает в следующих ситуациях.
  • Локальные ненадежные SWF-файлы могут быть изолированы от Интернета. Этой ситуации можно избежать, если переклассифицировать данный SWF-файл как локальный с сетевым подключением или доверенный.
  • Операция навигации произвела попытку оценить псевдо адрес URL создания сценариев, но затронутый документ (HTML-документ в обозревателе) находится в изолированной программной среде, доступ к которой закрыт. Чтобы избежать этой ситуации, укажите allowScriptAccess="always" в соответствующем документе.
  • Навигация по специальным окнам _self, _top или _parent невозможна, если ваш SWF-файл содержится на HTML-странице, у которой свойство allowScriptAccess имеет значение none или sameDomain, в то время как домены HTML-файла и SWF-файла не совпадают.
  • Навигация окна с нестандартным именем из SWF-файла, размещенного в локальной изолированной программной среде для файловой системы, запрещена.
  • Нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).
 
Error — Если вызов метода не выполняется в ответ на действие пользователя, такое как событие мыши или нажатие клавиши. Это требование применимо только к содержимому в Flash Player и к содержимому Adobe AIR, находящемуся не в изолированной программной среде приложения.

Связанные элементы API


Пример  ( Использование этого примера )

В следующем примере URL-адрес http://www.adobe.com открывается в новом окне браузера, при этом web-серверу передаются данные о сеансе пользователя, извлеченные из объекта URLVariables.
package {
    import flash.display.Sprite;
    import flash.net.navigateToURL;
    import flash.net.URLRequest;
    import flash.net.URLVariables;

    public class NavigateToURLExample extends Sprite {

        public function NavigateToURLExample() {
            var url:String = "http://www.adobe.com";
            var variables:URLVariables = new URLVariables();
            variables.exampleSessionId = new Date().getTime();
            variables.exampleUserLabel = "Your Name";
            var request:URLRequest = new URLRequest(url);
            request.data = variables;
            try {            
                navigateToURL(request);
            }
            catch (e:Error) {
                // handle error here
            }
        }
    }
}

Следующий пример демонстрирует открытие новых окон браузера через Flash Player с помощью метода navigateToURL(). Пример предоставлен ActionScriptExamples.com.
// Requires
// - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol"
//
buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click);
 
function buttonSymbol_click(evt:MouseEvent):void {
    var req:URLRequest = new URLRequest("http://www.adobe.com/");
    navigateToURL(req, "_blank");
}

Следующий пример демонстрирует синтаксис для запуска номеронабирателя устройства с целью набора определенного номера.
var request:URLRequest = new URLRequest( "tel:+5555555555" );
navigateToURL( request );

Следующий пример демонстрирует синтаксис для запуска на устройстве приложения для обработки текстовых сообщений с целью отправки сообщения заданному получателю.
var request:URLRequest = new URLRequest( "sms:+5555555555" );
navigateToURL( request );

Следующий пример демонстрирует синтаксис для запуска приложения Android Market. Задается параметр для поиска приложения Flash Player.
var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" );
navigateToURL( request );

registerClassAlias

()функция 
public function registerClassAlias(aliasName:String, classObject:Class):void

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Сохраняет класс (тип) объекта при шифровании объекта в формат AMF. Когда вы кодируете объект в формат AMF, данная функция сохраняет псевдоним для его класса, что позволит при декодировании объекта восстановить нужный класс. Если в контексте кодирования псевдоним для класса объекта не был зарегистрирован, то объект кодируется как анонимный. Аналогичным образом, если в контексте декодирования отсутствует зарегистрированный псевдоним, для декодированных данных создается анонимный объект.

Примерами классов, кодирующих объекты в формат AMF, могут служить LocalConnection, ByteArray, SharedObject, NetConnection и NetStream.

Контекстам кодирования и декодирования не требуется использовать один и тот же класс для псевдонима. Они могут сменить классы при условии, что целевой класс содержит все члены, сериализуемые исходным классом.

Параметры

aliasName:String — Используемый псевдоним.
 
classObject:Class — Класс, связанный с данным псевдонимом.


Выдает
TypeError — Если один из параметров имеет значение null.

Связанные элементы API


Пример  ( Использование этого примера )

В данном примере с помощью функции registerClassAlias() регистрируется псевдоним (com.example.eg) для класса ExampleClass. Так как для класса регистрируется нужный псевдоним, объект может быть десериализован как экземпляр ExampleClass, при этом код выдаст значение true. Если бы вызов registerClassAlias() был удален, код бы выдал значение false.
package {
    import flash.display.Sprite;
    import flash.net.registerClassAlias;
    import flash.utils.ByteArray;

    public class RegisterClassAliasExample extends Sprite {
        public function RegisterClassAliasExample() {
            registerClassAlias("com.example.eg", ExampleClass);
            var eg1:ExampleClass = new ExampleClass();
            var ba:ByteArray = new ByteArray();
            ba.writeObject(eg1);
            ba.position = 0;
            var eg2:* = ba.readObject();
            trace(eg2 is ExampleClass); // true
        }
    }
}

class ExampleClass {}

sendToURL

()функция 
public function sendToURL(request:URLRequest):void

Язык версии: ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4

Отправляет на сервер запрос URL-адреса, но игнорирует ответ.

Для изучения ответа сервера используйте метод URLLoader.load().

Нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).

Можно запретить использование SWF-файлом этого метода путем установки параметра allowNetworking для тегов object и embed на странице HTML, содержащей SWF-содержимое.

В приложении Flash Player 10 и более поздней версии при использовании типа содержимого multipart (например, multipart/form-data), в котором содержится загрузка (обозначена параметром filename в заголовке content-disposition в теле оператора POST), к операции POST применяются правила безопасности для загрузок:

  • Операция POST должна быть выполнена в ответ на действие, инициированное пользователем, такое как щелчок мыши или нажатие клавиши.
  • Если операция POST является междоменной (назначением операции POST не является сервер, на котором содержится SWF-файл, отправляющий запрос POST), целевой сервер должен предоставить файл политик URL, в котором разрешен междоменный доступ.

Кроме того, все объекты multipart Content-Type должны иметь допустимый синтаксис (в соответствии со стандартами RFC2046). Если синтаксис является недопустимым, к операции POST применяются правила безопасности, действующие для загрузок.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

Параметры

request:URLRequest — Объект URLRequest, определяющий URL-адрес отправки данных.


Выдает
SecurityError — Локальные ненадежные SWF-файлы изолированы от Интернета. Этой ситуации можно избежать, если переклассифицировать данный SWF-файл как локальный с сетевым подключением или доверенный.
 
SecurityError — Нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).

Пример  ( Использование этого примера )

В следующем примере данные о сеансе пользователя, извлеченные из объекта URLVariables, передаются приложению по адресу http://www.yourDomain.com/application.jsp.
 package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.net.URLVariables;
    import flash.net.sendToURL;

    public class SendToURLExample extends Sprite {

        public function SendToURLExample() {
            var url:String = "http://www.yourDomain.com/application.jsp";
            var variables:URLVariables = new URLVariables();
            variables.sessionId = new Date().getTime();
            variables.userLabel = "Your Name";

            var request:URLRequest = new URLRequest(url);
            request.data = variables;
            trace("sendToURL: " + request.url + "?" + request.data);
            try {
                sendToURL(request);
            }
            catch (e:Error) {
                // handle error here
            }
        }
    }
}

[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.