Android中Java解码中的编码对象
Java和Android Base64编码/解码之间有什么区别吗? 我试图在我的java服务器上对一个对象进行编码,并在我的android应用程序上进行解码,但得到的结果完全不同。 (我知道这可以通过JSON实现) 在JAVA服务器上:Android中Java解码中的编码对象,java,android,base64,decode,encode,Java,Android,Base64,Decode,Encode,Java和Android Base64编码/解码之间有什么区别吗? 我试图在我的java服务器上对一个对象进行编码,并在我的android应用程序上进行解码,但得到的结果完全不同。 (我知道这可以通过JSON实现) 在JAVA服务器上: public static String toString( Serializable o ) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream
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());
}
在Android应用程序上:
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()
是否有其他方法将对象从服务器发送到客户端?将对象从java服务器发送到android应用程序:
Myclass m = (Myclass) ObjectInputStream.readObject();
请注意,此方法可以使用套接字完成,如果要通过http发送,可以将其作为json格式发送,并使用Gson库将json字符串转换为对象。如果Base64不同,并且ObjectInputStream中出现断开的二进制数据,序列化算法将失败。它还将检查它是否是相同的基类。因此,获得“完全不同”的东西是不可能的;至少你需要多解释一下。如果二进制数据不同,是否可以包含初始数据的片段以及转换后的数据。如果抛出异常,是哪一个?如果对象被错误地初始化,我们需要对象断开部分的源代码片段。没有足够的细节来理解问题所在。您可以将对象从java发送到android,而无需执行此操作。。也不用json@ArolaAb我该怎么做?在我给你答案之前,请编辑你的问题这正是我所做的,但我想通过http发送它而不使用JSON。你给android应用程序的提示是什么,你编码的字符串是一个对象,应该转换为同一类型的类?