最終的にいくつかの行き止まりを通してこれを追跡することができました。ksoapライブラリは、Webサービス呼び出しで送信される日付またはdoubleをどう処理するかを認識していないようです。それらを処理する方法を指示する必要があります。そうしないと、シリアル化エラーが発生します。
これを行う方法は、MarshalDate
クラスを実装することです。このチュートリアルには、クラスを実装するために必要なコードが含まれています。
私の経験から、ksoap2にはMarshalDate
すでにライブラリにクラスがあり、そのクラスがその役割を果たしますが、デフォルトではエンベロープに対して登録しません。封筒に登録することで(以下のように)、問題は解決しました。doubleまたはその他の浮動小数点数の場合は、MarshalFloat
代わりにを使用してください。
この問題を解決するには、この電話をかける前に、次のようにSoapSerializationEnvelope
します。HttpTransport
new MarshalDate().register(envelope);
あなたのはどこenvelope
ですかSoapSerializationEnvelope
。
クラスをインポートするときに、ksoap2ライブラリに誤ってMarshalDate
andMarshallFloat
クラスがあることがわかりました。これは、Eclipseがインポートするための2つのオプションを提供してくれたためです。そのうちの1つはksoap2内にありました。含まれているクラスで十分で、カスタムクラスを削除しました。