1. Ylirebus, 10.01.2012 #1
    Ylirebus

    Ylirebus Threadstarter Neuer Benutzer

    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

    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

    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

    das ist doch simples xml - warum nimmst nicht einfach einen xml parser ?
     
  5. Ylirebus, 13.01.2012 #5
    Ylirebus

    Ylirebus Threadstarter Neuer Benutzer

    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

    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

    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

    Zuletzt bearbeitet: 14.01.2012
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung Freitag um 23:01 Uhr
[OFFEN] Service wird bei manchen Geräten nicht gestartet Android App Entwicklung 09.04.2017
AsyncTasks: "FTP Download" / "FTP liste Daten in Verzeichnis" Probleme Android App Entwicklung 16.01.2017
Google Play Services Fehler Android App Entwicklung 19.12.2016
AI2: mit Listpicker- Auswahl mehrere Labels aus verschiedenen Index- Listen füllen. Android App Entwicklung 09.12.2016
Bluetooth Low Energy - Cache?? Android App Entwicklung 05.09.2016
Location abfrage in einem Service Android App Entwicklung 13.07.2016

Users found this page by searching for:

  1. android netservice

Du betrachtest das Thema "Liste von komplexen Datentypen aus .NET service" im Forum "Android App Entwicklung",