1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

kSoap2 + WCF Webservice + komplexe Datentypen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von android-entwickler, 02.11.2011.

  1. android-entwickler, 02.11.2011 #1
    android-entwickler

    android-entwickler Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    1
    Registriert seit:
    06.10.2011
    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
     
  2. Ylirebus, 09.01.2012 #2
    Ylirebus

    Ylirebus Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    29.12.2011
    Hallo android-entwickler,

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

    Viele Grüße

    Ylirebus
     
  3. android-entwickler, 01.02.2012 #3
    android-entwickler

    android-entwickler Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    1
    Registriert seit:
    06.10.2011
    Hi,

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

    Viele Grüße
     

Diese Seite empfehlen