AMFPHP issue referencing ByteArray

Recently I made some test in AMFPHP sending an retrieving ByteArray to be stored in a mysql blob field.

http://kurilo.pro/the-essay/ The Essay

But suddenly I encounter a problem when I was trying to return an array of ByteArrays and I could not find out the reason flash continued to show me this error:

The php file which was generating this error was:

Custom Dissertation Writing Ethics
1
2
3
4
5
6
7
8
9
10
11
class Service
{
public function getArray( )
{
$GLOBALS['amfphp']['encoding'] = 'amf3';
$a = new ByteArray("\x00\x10this is a string");
$b = new ByteArray("\x00\x16this is another string");
$c = $a;
return array( $a, $b, $c );
}
}

While the Actionscript test class was:

Need Help On Essay Writing
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package
{
    import flash.display.Sprite;
    import flash.net.NetConnection;
    import flash.net.ObjectEncoding;
    import flash.net.Responder;
    import flash.utils.ByteArray;

    public class test extends Sprite
    {
        private var nc: NetConnection;
        private var rsp: Responder;

        public function test()
        {
            rsp = new Responder( onResult, null );
            nc = new NetConnection();
            nc.objectEncoding = ObjectEncoding.AMF3;
            nc.connect( "http://localhost/amfphp/trunk/gateway.php" );
            nc.call( "test.bytearray.Service.getArray", rsp );
        }

        private function onResult( e: * ): void
        {
            if ( e is Array )
            {
                for each ( var b: ByteArray in( e as Array ) )
                {
                    trace( 'reading bytearray...' );
                    b.position = 0;
                    trace( b.readUTF() );
                }
            }
        }
    }
}

I Need Help On My History Homework After some investigation I found that the error was into the AMFSerializer.php file in the writeAmf3ByteArray method which doesn’t reference correctly the bytearray objects.

Thus I made a little modification and after that I succeeded to retrieve correctly the bytearray list ( with the 3rd element as reference of the first one ).

Life Science Homework Help Here you can download the patch file, if you want to test the modification ( at your own risk 🙂 ). The patch has been created using the last svn version of amfphp and you can apply the patch with the following command:

1
patch -p0 -i bytearray.patch

Charset handling proposal in AMFPHP

Patrick Mineault makes a proposal for the charset handling in AMFPHP

[..] that should put an end to problems with Unicode and native character set handling between PHP and Flash, a problem that has palgued AMFPHP for a long time

To use charset handling in the new CVS version, you will need to call the setCharsetHandler function from your gateway.php file, like this:

How To Write A Term Paper $gateway->setCharsetHandler("iconv", "latin1", "latin1");

Detail for setCharsetHandler method: setCharsetHandler(string mode, string phpCharset, string sqlCharset) The mode can be: 1. none (don’t do anything) 2. iconv (uses the iconv libray for reencoding) 3. mbstring (uses the mbstring library for reencoding) 4. recode (uses the recode library for reencoding) 5. utf8_decode (uses the XML function utf8_decode and encode for reencoding – ISO-8859-1 only) I haven’t tested it already, but I’m sure this is a great step toward a solution of the charset problem!

http://www.amfphp.org/wiki/doku.php?id=charset_issue