gpt4 book ai didi

java - 从 SignedObject 获取时出现 InvalidObjectException

转载 作者:行者123 更新时间:2023-12-01 05:13:52 26 4
gpt4 key购买 nike

我正在使用 ObjectInputStream 通过 TCP 连接发送封装在 Message 对象(封装在 SignedObject 中)中的对象。这是基本代码:

发送

Object data = someObject;
ObjectOutputStream = new ObjectOutputStream(socket.getOutputStream());
Message newMsg = new Message(data);
out.writeObject(security.signObject(newMsg,privKey));

接收

ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Object line = in.readObject();
SignedObject messageIn = (SignedObject) line;
Message msg = (Message) messageIn.getObject();

Message类是一个基本类,只有字段,没有方法。其中一个字段是 Object Message.data,在本例中包含 siena.Filter 或 siena.Notification。当我调用 SignedObject.getObject() 时,我收到 InvalidObjectException。堆栈跟踪如下。

java.io.InvalidObjectException: siena.SENPInvalidFormat
at siena.Filter.readObject(Filter.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at java.security.SignedObject.getObject(Unknown Source)

消息传输的代码正确。它适用于其他类的许多其他情况,甚至同一类的其他版本。它不适用于特定版本的 siena.Filter 和 siena.Notification。

我可以看到正在发送的类(siena.Filter 或 siena.Notification)的 readObject() 方法正在被调用,但我不知道这是否应该发生。我知道 siena 方法中抛出了一个异常,我猜测这是导致 InvalidObjectException 的原因。

所以问题是,问题是 siena.class.readObject() 抛出异常并且编写不正确,还是问题是 siena.class.readObject() 被调用?如果是后者,我将如何解决这个问题?

谢谢,大卫

最佳答案

为什么你只是将从 InputObjectStream 获得的内容强制类型转换为你传递的对象类型?一旦获得 readObject,只需将其类型转换为 SingledObject,应该可以吗?再次抱歉我无法完全理解。最好在这里输入一些代码。

关于java - 从 SignedObject 获取时出现 InvalidObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11619254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com