Hello everybody.

I am facing a strange problem that prevents me from connecting to Drupal from Flash.

When I issue this from Flash

var drupal:NetConnection = new NetConnection();
drupal.objectEncoding = ObjectEncoding.AMF3;
drupal.connect( 'services/amfphp' );

I am getting "NetConnection.Call.BadVersion". Using ServiceCapture to save the server's response to a file I see that there is a BOM \xEF\xBB\BF in front of the response. When I manually remove the BOM from this file and by using the ServiceCapture's feature "Map URL to file", I am replacing the server's response with the edited file, Flash connects normally.

Where this BOM is coming from?
I have tried all possible combinations on $gateway->setCharsetHandler("xxx", "yyy", "zzz"); in amfphp.module with no luck.

I have searched extensively on google.com, amfphp.org, drupal.org with various terms I came up with, but everyone is hinting on hidden BOM's in front of <?php tags placed there from various editors. Well this is not the case, I have looked in all of my installation's files with a hex editor and there is nowhere a BOM.

I have traced with ActiveStateKomodo the whole response generation line by line. The final code that actually sends the response is in sites/all/modules/amfphp/amfphp/core/amf/app/Gateway.php at line 247
print($output); // flush the binary data
The sent output is
\x00\x00\x00\x01\x00\x12AppendToGatewayUrl\x00\x00\x00\x00C\x02\x00@?SESS6725e8504a10b3249433133c79f307ac=lpnh9mpnsqc70qa0metfi4t687\x00\x01\x00\x0B/1/onResult\x00\x04null\x00\x00\x00™\x03\x00\x06sessid\x02\x00\x1Alpnh9mpnsqc70qa0metfi4t687\x00\x04user\x03\x00\x06userid\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08hostname\x02\x00127.0.0.1\x00\x05roles\x08\x00\x00\x00\x01\x00\x011\x02\x00\x0Eanonymous user\x00\x00 \x00\x07session\x02\x00\x00\x00\x05cache\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
so no BOM here...

I also tried on various systems, CentOs/FreeBSD/WinXP-Apache/Lighttp-PHP 5.2.1 /PHP 5.2.11. Same thing everywhere.

So where this damn BOM is getting added? I have been searching for days without any success. I have run out of new ideas to try and my last resort before quitting the Flash-Drupal communication through AMF is posting here.

Any help/hint/advice will be much appreciated.

Comments

axaubet’s picture

I have the same issue here. No way to connect with Flash.

Any news from somebody that has used the service module with amfphp?

Thank you very much.

icylace’s picture

Try using a full URL when making the connection.

drupal.connect('http://yourwebsite.tld/?q=services/amfphp');
icylace’s picture

I also just tried this successfully a moment ago:

drupal.connect('/?q=services/amfphp');

I'm using "?q=" in the URL so this will work whether or not clean URLs are activated.

icylace’s picture