How to decode AS3 object encoded in AMF3 in PHP

后端 未结 3 941
[愿得一人]
[愿得一人] 2021-01-25 06:41

I am trying to decode an object sent through sockets from Flash in PHP. I tried using AMFPHP and ZEND_AMF but neither did worked.

Can someone point me to the way of deco

相关标签:
3条回答
  • 2021-01-25 06:51

    You can use SabreAMF to encode/decode AMF data on PHP.

    0 讨论(0)
  • 2021-01-25 06:55

    @Ivan Dyachenko Thanks for pointing towards SabreAMF Below is the way I successfully decoded and mapped the AMF3 encoded object received from Flex/Flash on sockets

    include_once 'SabreAMF/AMF3/Serializer.php';
    include_once 'SabreAMF/AMF3/Deserializer.php';
    include_once 'SabreAMF/OutputStream.php';
    include_once 'SabreAMF/InputStream.php';
    include_once 'SabreAMF/TypedObject.php';
    include_once 'SabreAMF/ClassMapper.php';
    
    /************DECODER*****************/
    SabreAMF_ClassMapper::registerClass('FLASH_CLASS_NAME','PHP_CLASS_NAME'); //CLASSES SHOULD BE SAME
    $inputStream = new SabreAMF_InputStream($buffer);
    $des = new SabreAMF_AMF3_Deserializer($inputStream);
    $obj = $des->readAMFData();
    //$obj will contain the instance of PHP_CLASS_NAME with the properties set as the values sent by Flex/Flash
    /************END DECODER*****************/
    
    /**************ENCODER******************/
    $classObj = new PHP_CLASS(); //PHP_CLASS is your class
    $object = new SabreAMF_TypedObject('FLASH_CLASS_NAME',$classObj); //FLASH_CLASS_NAME IS NAME OF CLASS AVAILABLE TO FLASH FOR MAPPING
    $outputStream = new SabreAMF_OutputStream();
    $serializer = new SabreAMF_AMF3_Serializer($outputStream);
    $serializer->writeAMFData($object);
    $output = $outputStream->getRawData();
    
    //$output is AMF Encoded string to be sent to FLEX/FLASH. 
    /***********END ENCODER***************/
    
    0 讨论(0)
  • 2021-01-25 07:04

    Please take a look at this - https://github.com/neoxic/php-amf3 - this is a very reliable PHP extension for encoding/decoding AMF3 streams.

    0 讨论(0)
提交回复
热议问题