FlexiPedia Wiki on Adobe Flex
Флэш Потрошитель - Жизнь вокруг технологииЖизнь вокруг технологии

Флэш Потрошитель этот | тот | 1.0

С 09.09.2002
  • Коллекция багов Flash
  • Ссылки для начинающего аниматора
  • Flex для PHP-разработчиков
  • Как вы используете Flash?

Поток сознания

polovaikin ответил на Что такое матрица:

флеш рипер уже не тот ;)

 
 

7 часов назад

Флэшер-аноним ответил на Что такое матрица:

Картинки можно дополнить текстом.

http://www.chemometrics.ru/materials/textbooks/matrix.htm

21 час назад

makc3d ответил на Еще один способ заработать на играх:

ща потестим

1 день назад

Rost ответил на Еще один способ заработать на играх:

Fixed.

2 дня назад

7a ответил на BAFPUG revolution!:

Мы были на прошлой неделе в Белоруссии проездом, было очень холодно: ночью в Гомеле -32 %) Спасибо за приглашение, у меня есть сильное желание приехать и послушать доклады, интересные темы, но всё же в следующий раз, когда будет потеплее ;)

2 дня назад

Флэшер-аноним ответил на Релиз Alternativa3D 8.5.0 - с поддержкой GPU!:

Большое спасибо, очень интересно.

4 дня назад

Флэшер-аноним ответил на Cоздание мобильного Flash-приложения "Hello World" - урок для начинающих:

Наконец нашел что-то путное по теме. Начну разжевывать. Несколько дней уйдет, однако.

5 дней назад

Флэшер-аноним ответил на Избранные баги Flash:

Мне пришлось столкнуться с тем, что элементарно не работает комбинация клавиш Ctrl + C и Ctrl + V. Причем переустанавливали Flash и не раз. Может быть, есть здесь те, кто сталкивался с этой проблемой и как-то смог решить ее?

1 неделя назад

makc3d ответил на Избранные баги Flash:

beer good. spam bad!

1 неделя назад

Флэшер-аноним ответил на Избранные баги Flash:

Хотелось бы узнать, Как вы относитесь к пиву? Если положительно, то какое предпочитаете? Если отрицательно, то почему? Просто интересно...

1 неделя назад

Более старые 
Главная › Блоги › Блог Димка

BinaryHTTPService или как помочь HTTPService-у принимать ByteArray данные

В процессе разработки у меня стояла задача найти способ получать бинарные данные от сервера через HTTPService. Сам по себе HTTPService из пакета mx не позволяет получать результат в ByteArray. Это можно увидеть в классе mx.messaging.channels.DirectHTTPChannel в функции internalSend.


package mx.messaging.channels
{
public class DirectHTTPChannel extends Channel
{

.....

override protected function internalSend(msgResp:MessageResponder):void
{
var httpMsgResp:DirectHTTPMessageResponder = DirectHTTPMessageResponder(msgResp);
var urlRequest:URLRequest;

try
{
urlRequest = createURLRequest(httpMsgResp.message);
}
catch(e: MessageSerializationError)
{
httpMsgResp.agent.fault(e.fault, httpMsgResp.message);
return;
}

var urlLoader:URLLoader = httpMsgResp.urlLoader;
urlLoader.addEventListener(ErrorEvent.ERROR, httpMsgResp.errorHandler);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, httpMsgResp.errorHandler);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, httpMsgResp.securityErrorHandler);
urlLoader.addEventListener(Event.COMPLETE, httpMsgResp.completeHandler);
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpMsgResp.httpStatusHandler);
urlLoader.load(urlRequest);
}

.....

}
}

У URLLoader-а по умолчанию параметр dataFormat имеет значение URLLoaderDataFormat.TEXT, а для получения данных в виде ByteArray нужен URLLoaderDataFormat.BINARY.

Всё делается очень просто. Первое, что нам нужно – это создать расширение для класса DirectHTTPChannel и установить у urlLoader-а параметр dataFormat=URLLoaderDataFormat.BINARY;


public class DirectHTTPBinaryChannel extends DirectHTTPChannel
{
public function DirectHTTPBinaryChannel(id:String, uri:String="")
{
super(id, uri);
}

override protected function getMessageResponder(agent:MessageAgent,
message:IMessage):MessageResponder
{
return new DirectHTTPBinaryMessageResponder(agent, message, this, new URLLoader());
}

override protected function internalSend(msgResp:MessageResponder):void
{
var httpMsgResp:DirectHTTPBinaryMessageResponder = DirectHTTPBinaryMessageResponder(msgResp);
var urlRequest:URLRequest;

try
{
urlRequest = createURLRequest(httpMsgResp.message);
}
catch(e: MessageSerializationError)
{
httpMsgResp.agent.fault(e.fault, httpMsgResp.message);
return;
}

var urlLoader:URLLoader = httpMsgResp.urlLoader;
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(ErrorEvent.ERROR, httpMsgResp.errorHandler);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, httpMsgResp.errorHandler);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, httpMsgResp.securityErrorHandler);
urlLoader.addEventListener(Event.COMPLETE, httpMsgResp.completeHandler);
urlLoader.load(urlRequest);
}
}

Для того, чтобы мы могли использовать наш DirectHTTPBinaryChannel, создаем расширение класса HTTPService.


public class BinaryHTTPService extends HTTPService
{
protected static var binaryChannel:Channel;
protected static var binaryChannelSet:ChannelSet;

public function BinaryHTTPService(rootURL:String = null, destination:String = null)
{
super(rootURL, destination);
}

override public function send(parameters:Object = null):AsyncToken
{
if (useProxy == false)
{
/* force the use of our binary channel */
if (binaryChannelSet == null)
{
var dcs:ChannelSet = new ChannelSet();
binaryChannel = new DirectHTTPBinaryChannel("direct_http_binary_channel");
dcs.addChannel(binaryChannel);
channelSet = dcs;
binaryChannelSet = dcs;
}
else if (channelSet != binaryChannelSet)
{
channelSet = binaryChannelSet;
}
}
return super.send(parameters);
}
}

Рабочие классы:
https://code.google.com/p/apron/source/browse/version_2/apron2_network/s...
https://code.google.com/p/apron/source/browse/version_2/apron2_network/s...

  • BinaryHTTPService
  • ByteArray
  • HTTPService
  • Статьи
- Димка, вс, 18/04/2010 - 09:57
  • Блог пользователя Димка
  • В Жуйк
Примечания: Статус документа => в процессе ·
Статьи · Идеальный клип · Персоналии · Глоссарий (уст.) · Что делать? · К началу ↑
© 2002-2012 Ростиславр · О проекте · Подписка на RSS · α-тестировани невероятного
]]>
]]>
Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Регистрация
  • Запросить новый пароль