0

プロジェクトの一環として、ksoap2を使用してJava(Axis)のWebサービスにアクセスする必要があります。そのWebサービスはCustomerオブジェクトのベクトルを返します。私の問題はAndroidのKsoap2でそのベクトルを処理できないことです。私は多くの方法を試しました。それを行う方法がわかりません。ksoap2でのマーシャリングについて読みました。それは私の問題を解決するために必要ですか?もしそうなら、どうすればKsoap2でベクターをマーシャリングできますか?誰か助けてください……

4

2 に答える 2

1

取得したい複雑なオブジェクトのクラス(ベクトルのアイテム)を登録すると、ksoap2は変換を試み、SoapObjectsを含むベクトルではなく、登録されたクラスのオブジェクトを含むベクトルを提供します。クラスをksoapに登録するには、プロパティにアクセスしてWebサービスから取得した値を割り当てることにより、応答内のオブジェクトを逆シリアル化できるKvmSerializableをクラスに実装する必要があります。クラスに応じて、いくつかのマーシャルも登録する必要がある場合があります(たとえば、クラスのint、Double、およびFloatフィールドを逆シリアル化するため)。

登録は次の方法で行うことができます。

envelope.addMapping(namespace, typeName, clazz);

namespace idが型の名前空間(wsdlにあります)である場合、typenameは型の名前(wsdlにも表示されます)であり、clazzは登録するクラスです。

お役に立てれば!

于 2012-04-08T15:19:55.900 に答える
1

私のプロジェクトでは、ここで説明されているように、ksoap2 の回答からオブジェクトを手動で解析しました

基本的に、回答として受け取った SoapObject を繰り返し処理し、Customer オブジェクトを構築します。

Category[] categories = new Category[soap.getPropertyCount()];
    for (int i = 0; i < categories.length; i++) {
        SoapObject pii = (SoapObject)soap.getProperty(i);
        Category category = new Category();
        category.CategoryId = Integer.parseInt(pii.getProperty(0).toString());
        category.Name = pii.getProperty(1).toString();
        category.Description = pii.getProperty(2).toString();
        categories[i] = category;
    }

コードは seesharpgears から取得したもので、クレジットはそこにあります。応答の解析にまだ問題がある場合は、さらに詳しい情報が必要になります (例: xml-response...)。

于 2011-05-30T09:29:27.003 に答える