5

どの形式を試しても、Android(Java)アプリから.NETWebサービスに日付を送信できません。、、、として送信してみましGregorianCalendarた...何も機能Dateしません。Calendar

実行時例外として「シリアル化できません」というエラーが発生します。ksoap2を使用してWebサービス呼び出しを管理しています。何か案は?

以下のエラー:

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

1 に答える 1

6

最終的にいくつかの行き止まりを通してこれを追跡することができました。ksoapライブラリは、Webサービス呼び出しで送信される日付またはdoubleをどう処理するかを認識していないようです。それらを処理する方法を指示する必要があります。そうしないと、シリアル化エラーが発生します。

これを行う方法は、MarshalDateクラスを実装することです。このチュートリアルには、クラスを実装するために必要なコードが含まれています。

私の経験から、ksoap2にはMarshalDateすでにライブラリにクラスがあり、そのクラスがその役割を果たしますが、デフォルトではエンベロープに対して登録しません。封筒に登録することで(以下のように)、問題は解決しました。doubleまたはその他の浮動小数点数の場合は、MarshalFloat代わりにを使用してください。

この問題を解決するには、この電話をかける前に、次のようにSoapSerializationEnvelopeします。HttpTransport

new MarshalDate().register(envelope);

あなたのはどこenvelopeですかSoapSerializationEnvelope

クラスをインポートするときに、ksoap2ライブラリに誤ってMarshalDateandMarshallFloatクラスがあることがわかりました。これは、Eclipseがインポートするための2つのオプションを提供してくれたためです。そのうちの1つはksoap2内にありました。含まれているクラスで十分で、カスタムクラスを削除しました。

于 2012-09-11T11:24:42.863 に答える