1

リクエスト エンベロープは次のようになります。

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
  <v:Header />
  <v:Body>
    <getLijst xmlns="http://OAM/OMZETAPPMETHODS.xsd">
      <selectie i:type="n1:OAM_ArtstructselobjUser" xmlns:n1="http://OAM/OMZETAPPMETHODS.xsd">
        <filiaal i:type="d:decimal">4</filiaal>
        <artnivsel i:type="n1:OAM_ArtstructobjUser">
          <asonummer i:type="d:decimal">1</asonummer>
          <asotype i:type="d:string">P</asotype>
        </artnivsel>
      </selectie>
    </getLijst>
  </v:Body>
</v:Envelope>

そして、これは私のコードの一部です:

String nameSpace = "http://OAM/OMZETAPPMETHODS.xsd";
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setAddAdornments(false);
SoapObject request = new SoapObject(nameSpace, _soapMethod);

OAM_ArtstructselobjUser obj = new OAM_ArtstructselobjUser();
// .. This is where the properties are added, irrelevant
request.addProperty("selectie", obj);

OAM_ArtstructobjUser obj2 = new OAM_ArtstructobjUser();
// .. This is where the properties are added, irrelevant
request.addProperty("artnivsel", obj2);

envelope.setOutputSoapObject(request);

Marshal floatMarshal = new MarshalFloat();
floatMarshal.register(envelope);

envelope.addMapping(nameSpace, "OAM_ArtstructselobjUser", OAM_ArtstructselobjUser.class);   
envelope.addMapping(nameSpace, "OAM_ArtstructobjUser", OAM_ArtstructobjUser.class);     

だから私artnivselはカスタムタイプを持ちたいのですが、の名前空間を継承していますselectie。上記のコードを実行すると、05-07 14:22:21.034: ERROR/AndroidRuntime(16417): Caused by: java.lang.RuntimeException: Unknown Property: asotype

nameSpace秒のaddMappingを他の値に変更すると、コードは正常に実行されます。しかし、私のエンベロープ XML は正しくありません。もう。

私にポインタを与えることができる人なら誰でも、私は特にksoap2またはsoapの経験がありません。

4

1 に答える 1

1

ksoap2.6.4 に更新すると、これが修正されるようです。に追加avoidExceptionForUnknownPropertyするだけtrueですSoapSerializationEnvelope

于 2012-05-07T13:02:12.347 に答える