kSoap2 + WCF Webservice + komplexe Datentypen

A

android-entwickler

Neues Mitglied
1
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
 
Hallo android-entwickler,

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

Viele Grüße

Ylirebus
 
Hi,

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

Viele Grüße
 

Ähnliche Themen

P
  • pierredrks
Antworten
5
Aufrufe
1.101
pierredrks
P
S
Antworten
11
Aufrufe
1.118
SlayNox
S
T
Antworten
6
Aufrufe
1.237
TortenTheo
T
Zurück
Oben Unten