0

ksoap2-android を使用して、WS からの XML 応答を一連の POJO のクラスにバインドしようとしています。インターネット上の多くの例は、このような
非常に単純な応答を扱っています。 ただし、私の場合、多くのカスタム クラスがあり、それらは相互に参照を保持しています。

これが私がやろうとしていることです、私はこの種の応答をバインドしたいと思います:

<Car number="35">
    <Engine>
        [...]
    </Engine>
    <Passenger id="1">
        [...]
    </Passenger>
    <Passenger id="2">
        [...]
    </Passenger>
</Car>

この種のクラスに:

public class Car {

    private int number;
    private Engine engine;
    private ArrayList<Passenger> passengers;

}

可能であれば、POJO ファイルのみを変更します (単純な XML 注釈システムは非常に洗練されていますが、残念ながら ksoap にはこれに相当するものはありません)。

KVMSerializable インターフェイスを調べましたが、getPropertyInfo() メソッドをオーバーライドしようとすると、PropertyInfo.type で何を返す必要があるのか​​ 、ksoap が ArrayList をどのように処理するのかわかりません。

今、頭痛がひどいので助けてください

4

2 に答える 2

1

下記URLにアクセスしてお読みください。 http://www.c-sharpcorner.com/UploadFile/88b6e5/how-to-call-web-service-in-android-using-soap/

Ashok Parmar Traction Software Co. に感謝します。

于 2012-12-10T10:06:48.390 に答える
0

ksoap 2のドキュメントを読む必要があります。そこには多くの有用な例があります。複合型の配列を取得するには、ここで
確認できます。複雑なオブジェクトを解析するためにこのアプローチを 使用しました。 それらのすべてが機能しない場合は、soap オブジェクトからフィールドごとに pojo にマップする必要があります。 更新日:


3 番目のリンクに感謝します。非常に便利で、カスタム オブジェクトをマップできるようになりました。ただし、提供された wiki ページでは、作成者は親要素にラップされたカスタム クラスの配列を解析しています。私の例のようにインラインリストでこれを行う方法はありますか?

これまで試したことはありませんが、私の回答と wiki を組み合わせることができると思います。まず、wiki の例を試して乗客リストを実装できます (Vector を拡張します)。次に、私のアプローチを使用して、内部に arraylist を含む複雑なオブジェクトを作成できます。重要なことは、オブジェクトを Web サービスからの応答に登録する必要があることです。このようなもの:

 public class PassengerVector extends Vector<Passenger> implements KvmSerializable {    

 }

 envelope.addMapping(NAMESPACE, "Car", Car.class);
 envelope.addMapping(NAMESPACE, "Passenger", PassengerVector.class);

しかし、この方法が機能するかどうかはわかりません。あなたの例のような非常に複雑なオブジェクトの場合、wiki のように、名前でフィールドごとにデータを取得することをお勧めします

于 2012-12-06T16:44:53.387 に答える