JavaとAndroid Base64のエンコード/デコードに違いはありますか? 私はJavaサーバー上のオブジェクトをエンコードしようとしていて、アンドロイドのアプリケーションでデコードしていますが、全く別のものを取得しています。 (私はそれがJSONで行うことができます知っている)。 AndroidアプリでAndroidでJavaデコードのエンコードオブジェクト
public static String toString(Serializable o) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
oos.close();
return Base64.getEncoder().encodeToString(baos.toByteArray());
}
:JAVAサーバー上
public static Object fromString(String s) throws IOException, ClassNotFoundException {
byte [] data = Base64.decode(s, Base64.NO_WRAP);
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream( data));
Object o = ois.readObject();
ois.close();
return o;
}
いくつかのより多くのデータ:
テストオブジェクトが
new String("igor")
encoded in java : rO0ABXQABGlnb3I=
decoded in android : data = [-84 -19 0 5 116 0 4 105 103 111 114]
機能がオン押しつぶすですois.readObject();
サーバーからクライアントにオブジェクトを送信する他の方法はありますか? AndroidアプリにJavaサーバーからオブジェクトを送信するには
Base64が異なり、破損したバイナリデータがObjectInputStreamに到達すると、シリアライゼーションアルゴリズムは失敗します。また、同じ基本クラスであるかどうかをチェックします。その結果、「全く異なる」ものを得ることは考えにくい。少なくともこれについてもっと説明する必要があります。バイナリデータが異なる場合は、初期データのフラグメントと変換後のデータを含めることができます。例外がスローされた場合、どちらが例外になりますか?オブジェクトが誤って初期化されている場合、オブジェクトの壊れた部分のソースコードフラグメントが必要です。間違っていることを理解するのに十分な詳細がありません。 – h22
Javaを使ってアンドロイドにオブジェクトを送信することもできます.Jsonを使わずに – ArolaAb
@ArolaAbどうすればいいですか? – igor