2

私はいくつかの ksoap リクエストを行っています。すべてが正常に機能しています。しかし今、私が作成したカスタムオブジェクトを渡さなければならないところまで来ました。その名も「アウフタグ」。シンプルな POJO です。

「request.addProperty」で渡そうとするとエラーになる

02-26 14:47:32.995: W/System.err(14095): java.lang.RuntimeException: Cannot serialize: kochtokrax.de.pojo.Auftrag@41a444d8

多くの時間を費やした後、「マーシャリングソリューション」を見つけました。 http://seesharpgears.blogspot.de/2010/11/implementing-ksoap-marshal-interface.html この例は、タイプ「doubel」および「Date」用です。残念ながら、これは私のオブジェクトでは機能しません。この場合、私がどのように対処しなければならないか、誰かが私を助けることができますか?

これが私がサービスを呼び出す方法です:

  PropertyInfo nos =new PropertyInfo();
  nos.setName("Auftrag");
  nos.setType(AuftragMarshall.class);

    // Use this to add parameters
    request.addProperty("Auftrag", auftrag);
    request.addProperty("DruckerBar", druckerBar);
    request.addProperty("DruckerKueche", druckerKueche);

    // Declare the version of the SOAP request
    SoapSerializationEnvelope envelope = new SoaperializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = false;
    envelope.setOutputSoapObject(request);

    AuftragMarshall marshall = new AuftragMarshall();
    marshall.register(envelope);
4

2 に答える 2

1

クラスAuftragは を実装する必要がありますKvmSerializable

の値を正しく設定していないためnos、次のようになります。

PropertyInfo nos = new PropertyInfo();
nos.setName("Auftrag");
nos.setType(AuftragMarshall.class);
nos.setValue(auftragObj);

PropertyInfoのタイプをに設定したためですAuftrag。ただし、後で and を追加DruckerBarDruckerKuecheます。クラスが違うと思います。そして、それは正しくありません。

私はあなたのような同様の問題を解決しますが、マーシャリングは私にとってもうまくいきません。カスタムマッパーで解決しました。最初に、目的のオブジェクトを実装KvmSerializableを使用してクラスのオブジェクトにマップし、Web サービスを介して送信します。

于 2013-02-27T15:55:51.373 に答える
0

複雑なオブジェクトの配列をリクエストに追加するを参照することをお勧めします。

于 2013-03-02T10:16:43.003 に答える