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

Liste von komplexen Datentypen aus .NET service

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Ylirebus, 10.01.2012.

  1. Ylirebus, 10.01.2012 #1
    Ylirebus

    Ylirebus Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    29.12.2011
    Hallo zusammen,

    ich probiere gerade eine Liste von komplexen Datentypen von einem .NET Webservice zu empfangen.

    Wenn ich die Funktion im Browser aufrufe bekomme ich folgendes Ergebnis:

    <ArrayOfSimpleAuftrag>
    <SimpleAuftrag>
    <Id>5</Id>
    <Nummer>Auftrg001</Nummer>
    </SimpleAuftrag>
    <SimpleAuftrag>
    <Id>6</Id>
    <Nummer>Auftrg002</Nummer>
    </SimpleAuftrag>
    </ArrayOfSimpleAuftrag>

    diese probiere ich nun auszulesen:

    Code:
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                 SoapEnvelope.VER11);
         envelope.dotNet = true;
         envelope.setOutputSoapObject(request);
         SoapObject result = null;
    
         try {
                 AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
                 httpTransport.debug=true;
                httpTransport.call(SOAP_ACTION, envelope);
                List<SoapObject> listOfSoapObject = new ArrayList<SoapObject>();
                //Vector<SoapObject> vectorOfSoapObject = new Vector<SoapObject>();
                
                try {
                    listOfSoapObject =  (ArrayList<SoapObject>) envelope.getResponse(); // <-- Exception
                }
                catch(Exception e)
                {
                      Log.e("error", "", e);
                }
               
                for (SoapObject soapObject : listOfSoapObject) {
                    SimpleAuftrag auftrag = convertToAuftrag(soapObject);
                    listOfAuftraegeTemp.add(auftrag);
                }
    Der Fehler passiert an der Stelle:
    listOfSoapObject = (ArrayList<SoapObject>) envelope.getResponse(); // <-- Exception
    Message:
    java.lang.ClassCastException: org.ksoap2.serialization.SoapObject


    Ich habe es schon mit Vector<SoapObject> probiert auch ohne Erfolg.

    Kann mir jemand sagen, was ich hier falsch mache ?

    Danke im Voraus!

    Ylirebus
     
  2. garak, 10.01.2012 #2
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    So eine Frage ist in der Entwicklung besser aufgehoben, deshalb habe ich sie dorthin verschoben.
     
  3. Ylirebus, 13.01.2012 #3
    Ylirebus

    Ylirebus Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    29.12.2011
    Hat jemand sonst ein Beispiel für das Empfangen von komplexen Datentypen mit einem Android ?:unsure:

    Wenn z.B. ein Webservice folgendes Ergebnis liefert:
    <ArrayOfSimpleAuftrag>
    <SimpleAuftrag>
    <Id>5</Id>
    <Nummer>Auftrg001</Nummer>
    </SimpleAuftrag>
    <SimpleAuftrag>
    <Id>6</Id>
    <Nummer>Auftrg002</Nummer>
    </SimpleAuftrag>
    </ArrayOfSimpleAuftrag>

    wie bekomme ich das auf meinem Android in eine Klasse

    public class SimpleAuftrag
    {
    public int Id;
    public string Nummer;
    }

    Danke im Voraus

    Ylirebus
     
    Zuletzt bearbeitet: 13.01.2012
  4. swordi, 13.01.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    das ist doch simples xml - warum nimmst nicht einfach einen xml parser ?
     
  5. Ylirebus, 13.01.2012 #5
    Ylirebus

    Ylirebus Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    29.12.2011
    Das hätte ich als nächstes einfach gemacht, aber ich dachte mir,ich frage mal nach ob es nicht einfacher geht.

    Danke

    Ylirebus
     
  6. the_alien, 13.01.2012 #6
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Debug doch einfach mal da rein und guck was für ein Objekt bei getResponse() rauskommt...
     
  7. Ylirebus, 14.01.2012 #7
    Ylirebus

    Ylirebus Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    29.12.2011
    Hallo zusammen,

    Also ich muss erstmal gestehen, das ich bis vor einer Woch eher .NET Anwendungen geschrieben habe aber vor einiger Zeit schon mal die ein oder andere kleine Java-Anwendung geschrieben habe.

    ich habe mal das "getResponse()" nur einem "SoapObject" zugewiese.

    Wenn ich mir den result anschaue, habe ich folgendes:

    anyType{SimpleAuftrag=anyType{Id=5; Nummer=Auftrg001; Referenz=Ref001; ProjektnummerFakturierung=prj001; Uebertragen=false; SachbearbeiterKunde=1; SachbearbeiterSelbst=1; }; SimpleAuftrag=anyType{Id=6; Nummer=Auftrg002; Referenz=Ref002; ProjektnummerFakturierung=prj002; Uebertragen=false; SachbearbeiterKunde=3; SachbearbeiterSelbst=1; }; }

    Aus dem Bauch raus würde ich sagen das müsste mann doch in eine List<SimpleAuftrag> konvertieren können.

    Code:
    List<SimpleAuftrag> auftraege = (List<SimpleAuftrag>)result;
    aber das funktioniert leider nicht.

    Fehler:
    java.lang.ClassCastException: org.ksoap2.serialization.SoapObject

    Muss ich die Klasse evtl. anders gestalten?

    public class SimpleAuftrag {
    public String Id;
    public String Nummer;
    public String Reference;
    public String SachbearbeiterKunde;
    public String SachbearbeiterSelbst;
    public String ProjektnummerFakturierung;
    public String Uebertragen;
    }

    Vielen Dank für Eure Hilfe

    P.S. Ich habe oben die Klasse ein wenig kleiner gestaltet, das Prinzip ist ja gleich. Die Klasse hat eigendlich mehr Parameter wie hier.

    Ylirebus
     
    Zuletzt bearbeitet: 14.01.2012
  8. the_alien, 14.01.2012 #8
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Zuletzt bearbeitet: 14.01.2012

Diese Seite empfehlen