0

をいじっていIExternalizableましたが、予期しない動作に気付きました。私はこのクラスを持っています:

public function readExternal(input:IDataInput):void {
    input.readObject();
    input.readObject();
    input.readObject();
}

public function writeExternal(output:IDataOutput):void {
    output.writeObject("first string");
    output.writeObject(424242);
    output.writeObject("second string");
}

しかし、AMF を使用してこのクラスをシリアライズし、(経由で) リモート サーバーに送信しようとするとRemoteObject、Charles は、要求が次のようになることを示してい
ます。

しかし、シリアル化されたオブジェクトが残りのリクエストに漏れているのは間違っているようです。

それで、私は何を間違っていますか?私が見逃したドキュメントの一部はありますか?

4

1 に答える 1

1

コードは問題ないようですが、適切なメソッドを使用してシリアル化する必要があります (文字列の場合は writeUTF、int の場合は writeInt など)。とにかく、Charles は IExternalizable を実装するオブジェクト (私はバージョン 3.4.1 を使用しています) では正しく動作しないようです。

あなたの質問とは直接関係ありません - 本当に IExternalizable を使う必要がありますか? AMF 圧縮アルゴリズムに関連するいくつかの利点が失われます (writeExternal メソッドでこれらすべてを実装しない場合を除きます)。

于 2010-04-06T16:24:19.160 に答える