Android アプリケーションで kSOAP 2 を使用しようとしていますが、特定の Web サービス要求を実行しようとすると、「二重 ID」例外がスローされます。kSOAP ソース コードでこれがスローされる場所を見つけることができました。それはSoapSerializationEnvelope
クラス メソッド public Object read()
にあります。例外がスローされることを示すコードの抜粋を以下に示します。
if (id != null) {
Object hlp = idMap.get(id);
if (hlp instanceof FwdRef) {
FwdRef f = (FwdRef) hlp;
do {
if (f.obj instanceof KvmSerializable)
((KvmSerializable) f.obj).setProperty(f.index, obj);
else
((Vector) f.obj).setElementAt(obj, f.index);
f = f.next;
} while (f != null);
} else if (hlp != null)
throw new RuntimeException("double ID");
idMap.put(id, obj);
}
この例外が何であるか、またはどのように修正できるかはまったくわかりません。この例外の扱いを知っている人はいますか?
ありがとう
編集:
このアプリケーションの iOS バージョンでも SOAP Web サービス接続メソッドを使用していることに注意してください。まったく同じ要求で問題はありません。
新情報:
<diffgr:before>
よく調べてみると、問題は、上記と同じ ID を持つテーブルを持つ要素を含む xml 応答に起因しているようです。これが問題の原因だと思います。これまでに実行した他のリクエストにはその要素がなく、例外もありません。質問に追加すると、Webサービスが応答でこのブロックを送信するのを止めるか、kSOAPにそれを無視させることができますか?