![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 11
|
Добрый день. Такая проблема:
Код сервиса на пхп (используется amfphp 1.9):
package {
import flash.display.Loader;
import flash.net.NetConnection;
import flash.net.Responder;
import flash.utils.ByteArray;
import flash.display.Sprite;
/**
* @author utyf
*/
public class Test extends Sprite {
private var responder : Responder;
private var conn : NetConnection;
public function Test() {
responder = new Responder(onFinish, onError);
conn = new NetConnection();
conn.connect("http://localhost/remoting/gateway.php");
sendData();
}
private function onError(result : Object) : void {
}
private function onFinish(result : *) : void {
trace('finish');
trace(result);
trace(result as ByteArray);
var loader : Loader = new Loader();
//loader.loadBytes(result);
addChild(loader);
}
private function sendData() : void {
conn.call("GetActors.get", responder);
}
}
}
loader.loadBytes(result) не выполняется, пишет, что не может привести этот объект к ByteArray. Вопрос: как мне получить байтаррай? ![]() Последний раз редактировалось utyf; 08.02.2008 в 14:17. |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 11
|
Как я понимаю, никто не рискнул попробовать описанное выше
![]() После некторого времени выяснилось как эту проблему обходить (как я понимаю это некоторый баг флеша): 1. Изучение показало, что от амфпхп приходит не просто объект, а объект,содержащий поле data, то есть то,что приходило бы, если пересылать ByteArray с помощью amf0. 2. При посылке запроса в теле запроса содержится некая информация о том в каком формате должен прийти ответ (amf0 или amf3). Документация говорит, что это регулируется свойством onjectEncoding. Устанавливаю явно но все остается по прежнему, amf3 не используется. 3.Попробовал сделать то же самое флексовым RemoteObject, оказалось что с ним все работает, приходит БайтАррай... 4. Поэкспериментировав и просмотрев промежуточный код (который из мхмл получается), выяснил, что если передавать с запросом какой нибудт сложный объект, то тогда(и только тогда) запрашиваются данные в amf3. То есть: приходят данные в амф0 приходят данные в амф3 и все хорошо. а objectEncoding на это не влияет. |
|
|||||
|
Вопрос только, зачем вам это нужно?
amfphp умеет архивировать ByteArray? Если нет то, размер пересылаемых данных довольно большой. Насколько я понял вы хотите передать byteArray картинки. Я делал подобные эксперименты с FMS, картинка (в jpg 4кб) в побитовом варианте 150кбайт посое применения ByteArray.compress() около 4кб Разница в 30 раз!
__________________
Сам себе репортер |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|