gpt4 book ai didi

java - 无法使用 ksoap2 序列化日期

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:30 24 4
gpt4 key购买 nike

无论我尝试哪种格式,我都无法将日期从我的 Android (Java) 应用程序发送到 .NET 网络服务。我已经尝试将其作为 GregorianCalendarDateCalendar 发送...没有任何效果。

我收到“无法序列化”错误作为运行时异常。我正在使用 ksoap2 来管理我的网络服务调用。有什么想法吗?

错误如下:

java.lang.RuntimeException: Cannot serialize: java.util.GregorianCalendar...
java.lang.RuntimeException: Cannot serialize: java.util.Date...

最佳答案

设法通过几个死胡同最终追查到这一点。似乎 ksoap 库不知道如何处理要在 web 服务调用中发送的日期或 double - 您需要告诉它如何处理它们,否则它会出现序列化错误。

这样做的方法是实现 MarshalDate 类:this tutorial具有实现它所需的代码。

根据我的经验,ksoap2 的库中已经有 MarshalDate 类,该类将完成这项工作,但默认情况下不会将其注册到信封中。通过在信封上注册它(如下),问题就解决了。对于 double 或其他 float ,请改用 MarshalFloat

要解决此问题,在通过 HttpTransport 发送 SoapSerializationEnvelope 之前进行此调用:

new MarshalDate().register(envelope);

envelope 是您的 SoapSerializationEnvelope

我在导入类时偶然发现 ksoap2 库有 MarshalDateMarshallFloat 类,因为 Eclipse 为我提供了两个导入它的选项 - 其中一个在 ksoap2 中。包含的类就足够了,我删除了我的自定义类。

关于java - 无法使用 ksoap2 序列化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368631/

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