2012-09-17 2 views
1

PHP에서 Flash를 통해 소켓을 통해 전송 된 객체를 디코딩하려고합니다. AMFPHP 및 ZEND_AMF를 사용해 보았지만 어느 것도 효과가 없었습니다.PHP에서 AMF3로 인코딩 된 AS3 객체를 디코딩하는 방법

AMFPHP의 원격 기능을 사용하지 않고도 PHP에서 AMF3로 인코딩 된 객체를 디코딩하는 방법을 지적 해 줄 수 있습니까? 데이터가 소켓을 통해 전송되므로 일반적으로 원격 객체를 amfphp로 사용할 수 없습니다.

답변

2

@Ivan 디아 첸코 덕분에 내가 성공적으로 디코딩하는 방식이며, 인코딩 된 객체가 소켓에 플렉스/플래시에서받은 AMF3이

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***************/ 
1

SabreAMF을 사용하면 PHP에서 AMF 데이터를 인코딩/디코딩 할 수 있습니다. SabreAMF 아래 쪽으로 향하고에 대한

+0

SabreAMF를 사용하려고합니다. 코드는 입니다. $ data = $ _POST [ 'data']; 에는 'SabreAMF/Server.php'가 포함됩니다. $ server = new SabreAMF_Server ($ data); $ request - 'setResponse ($ request ['response '], SabreAMF_Const :: R_RESULT, \t \t \t $ request ['data '] // 모든 데이터 구조체 ,이 경우 원본 데이터를 다시 반향합니다. \t); } echo $ server-> sendResponse(); ' 이 오류가 나타납니다 : 치명적인 오류 : 잡히지 않은 예외 '예외': '버퍼 언더런 at 위치 : 6.var/www/html/sockets/SabreAMF/InputStream.php:56에 15653 바이트 가져 오기' –

관련 문제