gpt4 book ai didi

javascript - 从 GWT RPC 负载中反序列化日期和时间戳以进行调试

转载 作者:行者123 更新时间:2023-12-03 05:41:40 25 4
gpt4 key购买 nike

我正在尝试了解远程过程调用的有效负载中的数据字段。 Date 和 Timestamp 类型对象最让我困惑。

完整的请求负载如下所示:

7|0|8|https://myapp.com/myapp/client/|72119BCB4CE5FB8D147EA76E8006F76E|com.myapp.service.MyService|updateTimepoint|java.lang.String/2004016611|java.util.Date/3385151746|554455|java.sql.Timestamp/3040052672|1|2|3|4|2|5|6|7|8|VhGcuow|0|

代码中定义的该服务的接口(interface)是:

public void updateTimepoint(String myId, Date timepoint,
AsyncCallback<Void> async);

从上面的值数组中,我可以看出粗体部分(见下文)引用发送的 java.util.Date 对象,中间的“554455”是 myId(我知道来自用例)。我没有解释为什么 myId 变量放在中间:

java.util.Date/3385151746|554455|java.sql.Timestamp/3040052672

现在我正在调试混淆的代码,因此在浏览器中查看“源”选项卡似乎不是一个选项。但这并没有多大帮助,因为你会看到奇怪的 JS 日期引用。我也不知道如何阅读。

那么,我如何将有效负载变量中的日期+时间戳编译回可读的内容?

谢谢!

附注或者 - VhGcuow 是一个日期吗?根据GWT java.util.Date serialization

最佳答案

正如@RobG所说,这些数字不是值,而是有关日期、时间戳类型的详细信息。有效负载由 | 分隔,这些 / 是类名字符串的一部分。请参阅Serializing RPC-GWT (我今年早些时候的回答)有关负载中字符串顺序和其他内容的更多详细信息。

VhGcuow 可能是一个 base64 编码的长整型。日期(可能还有时间戳,虽然我没有检查过)被序列化为一个长字段,因此该值作为一个长字段将表示自 1970 年 1 月 1 日以来的毫秒数。请参阅 RPC-GWT Serialization/java.util.Date Encoding有关如何理解和解码的更多讨论,而不仅仅是相信 RPC 的工作原理。

请注意,尽管 RPC 多年来没有发生变化,并且已被数十或数百名 GWT 开发人员使用,但他们没有遇到过正确的日期序列化问题。更有可能是其他问题正在发生(例如时区问题) - 提出另一个问题,其中包含问题的所有详细信息,并且“有效”测试用例可能会让您更快地找到答案。

关于javascript - 从 GWT RPC 负载中反序列化日期和时间戳以进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499237/

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