📜 ⬆️ ⬇️

BinaryHTTPService or how to help HTTPService accept ByteArray data

During the development process, I had the task of finding a way to get binary data from the server via HTTPService. HTTPService itself in the mx package does not allow getting the result in ByteArray. This can be seen in the mx.messaging.channels.DirectHTTPChannel class in the internalSend function.

  1. 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 ) ; } ..... } }
  2. 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 ) ; } ..... } }
  3. 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 ) ; } ..... } }
  4. 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 ) ; } ..... } }
  5. 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 ) ; } ..... } }
  6. 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 ) ; } ..... } }
  7. 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 ) ; } ..... } }
  8. 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 ) ; } ..... } }
  9. 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 ) ; } ..... } }
  10. 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 ) ; } ..... } }
  11. 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 ) ; } ..... } }
  12. 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 ) ; } ..... } }
  13. 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 ) ; } ..... } }
  14. 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 ) ; } ..... } }
  15. 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 ) ; } ..... } }
  16. 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 ) ; } ..... } }
  17. 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 ) ; } ..... } }
  18. 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 ) ; } ..... } }
  19. 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 ) ; } ..... } }
  20. 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 ) ; } ..... } }
  21. 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 ) ; } ..... } }
  22. 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 ) ; } ..... } }
  23. 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 ) ; } ..... } }
  24. 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 ) ; } ..... } }
  25. 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 ) ; } ..... } }
  26. 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 ) ; } ..... } }
  27. 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 ) ; } ..... } }
  28. 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 ) ; } ..... } }
  29. 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 ) ; } ..... } }

In URLLoader, the dataFormat parameter defaults to URLLoaderDataFormat.TEXT, and to receive data in the form of a ByteArray, you need URLLoaderDataFormat.BINARY.

Everything is done very simply. The first thing we need is to create an extension for the DirectHTTPChannel class and set the parameter dataFormat = URLLoaderDataFormat.BINARY to urlLoader;
  1. public class DirectHTTPBinaryChannel extends DirectHTTPChannel
  2. {
  3. public function DirectHTTPBinaryChannel ( id : String , uri : String = "" )
  4. {
  5. super ( id, uri ) ;
  6. }
  7. override protected function getMessageResponder ( agent : MessageAgent,
  8. message : IMessage ) : MessageResponder
  9. {
  10. return new DirectHTTPBinaryMessageResponder ( agent, message , this , new URLLoader ( ) ) ;
  11. }
  12. override protected function internalSend ( msgResp : MessageResponder ) : void
  13. {
  14. var httpMsgResp : DirectHTTPBinaryMessageResponder = DirectHTTPBinaryMessageResponder ( msgResp ) ;
  15. var urlRequest : URLRequest ;
  16. try
  17. {
  18. urlRequest = createURLRequest ( httpMsgResp. message ) ;
  19. }
  20. catch ( e : MessageSerializationError )
  21. {
  22. httpMsgResp.agent.fault ( e.fault, httpMsgResp. message ) ;
  23. return ;
  24. }
  25. var urlLoader : URLLoader = httpMsgResp.urlLoader;
  26. urlLoader. dataFormat = URLLoaderDataFormat . BINARY ;
  27. urlLoader. addEventListener ( ErrorEvent . ERROR , httpMsgResp.errorHandler ) ;
  28. urlLoader. addEventListener ( IOErrorEvent . IO_ERROR , httpMsgResp.errorHandler ) ;
  29. urlLoader. addEventListener ( SecurityErrorEvent . SECURITY_ERROR , httpMsgResp.securityErrorHandler ) ;
  30. urlLoader. addEventListener ( Event . COMPLETE , httpMsgResp.completeHandler ) ;
  31. urlLoader. load ( urlRequest ) ;
  32. }
  33. }

In order for us to use our DirectHTTPBinaryChannel, we create an extension of the class HTTPService.
  1. public class BinaryHTTPService extends HTTPService
  2. {
  3. protected static var binaryChannel : Channel;
  4. protected static var binaryChannelSet : ChannelSet;
  5. public function BinaryHTTPService ( rootURL : String = null , destination : String = null )
  6. {
  7. super ( rootURL, destination ) ;
  8. }
  9. override public function send ( parameters : Object = null ) : AsyncToken
  10. {
  11. if ( useProxy == false )
  12. {
  13. / * force the binary channel *
  14. if ( binaryChannelSet == null )
  15. {
  16. var dcs : ChannelSet = new ChannelSet ( ) ;
  17. binaryChannel = new DirectHTTPBinaryChannel ( "direct_http_binary_channel" ) ;
  18. dcs.addChannel ( binaryChannel ) ;
  19. channelSet = dcs;
  20. binaryChannelSet = dcs;
  21. }
  22. else if ( channelSet ! = binaryChannelSet )
  23. {
  24. channelSet = binaryChannelSet;
  25. }
  26. }
  27. return super . send ( parameters ) ;
  28. }
  29. }

Example of working classes: BinaryHTTPService DirectHTTPBinaryChannel

')

Source: https://habr.com/ru/post/91331/


All Articles