kSoap2 + WCF Webservice + komplexe Datentypen

  • 2 Antworten
  • Neuester Beitrag
Diskutiere kSoap2 + WCF Webservice + komplexe Datentypen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
A

android-entwickler

Neues Mitglied
Hallo zusammen,

ich benötigte in meiner App die Kommunikation über SOAP. Es sollen komplexe Datentypen ausgetauscht werden, welche auf dem Server generiert und an den Client übermittelt werden. Nun funktioniert die Kommunikation soweit ganz gut, nur leider bekomme ich kein direktes Objekt-Mapping hin.

wenn ich den SerializeableSoapEnvelope korrekt gefüllt und abgeschickt hab, kann ich mittels getResponse() oder alternativ mit envelope.bodyIn den Response abgreifen. Besteht nun überhaupt die Möglichkeit, den Inhalt direkt als selbstdefiniertes Objekt (welches das Kvm..-Interface implementiert hat) zu erhalten?

Irgendwas scheint beim Mapping falsch zu laufen, da ich als Typ immer "anyType" angezeigt bekomme...

Hier wäre der Request:

<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>
<n0:GetJobs id="o0" c:root="1" xmlns:n0="http://tempuri.org/" />
</v:Body>
</v:Envelope>

und der Response:


<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetJobsResponse xmlns="http://tempuri.org/">
<GetJobsResult xmlns:a="http://schemas.datacontract.org/2004/07/ConsoleApplication1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:id>98764321</a:id>
<a:name>bon jour</a:name>
</GetJobsResult>
</GetJobsResponse>
</s:Body>
</s:Envelope>

Hier wäre noch der aufrufende Code:

final SoapObject request = new SoapObject(NAMESPACE, "GetJobs");

final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.implicitTypes = true;

envelope.setOutputSoapObject(request);

envelope.addMapping(NAMESPACE, "GetJobsResponse", SingleJob.SINGLE_JOB);

final HttpTransportSE http = new HttpTransportSE(URL);
http.debug = true;
try
{
http.call("http://tempuri.org/HelloWorldService/GetJobs", envelope);

SingleJob sJ = ((SingleJob)envelope.getResponse());
// so hätte ich gern den Response...

}
catch (IOException e)
{
e.printStackTrace();
}
catch (XmlPullParserException e)
{
e.printStackTrace();
}

Ich bin dankbar für jeden Hinweis.

Viele Grüße,
der Entwickler
 
Y

Ylirebus

Neues Mitglied
Hallo android-entwickler,

hast du mittlerweile die Lösung?
Genau das möchte ich auch hinbekommen.

Viele Grüße

Ylirebus
 
A

android-entwickler

Neues Mitglied
Hi,

also ich habs nicht hinbekommen. Ich arbeite jetzt stattdessen mit WCF und JSON. Ich würd dir von KSOAP abraten..

Viele Grüße