Java Objekte zwischen Webserver und Android App austauschen

oetzi

oetzi

Fortgeschrittenes Mitglied
11
Hallo zusammen,

ich habe es jetzt endlich hingekriegt von meiner App einen Request an meinen Webserver zu schicken, dort einen String abzuholen und den auszugeben. Erledige das ganze über HttpClient, HttpGet und HttpResponse Objekte.

Der nächste Schritt ist jetzt, dass ich natürlich ganze Java Objekte holen möchte. Jetzt frage ich mich gerade, wie man das mit Android am sinnvollsten macht.
Bringt Android zufällig irgendeine Technik dafür mit?
Oder nutzt man üblicherweise JSON dafür?
Oder gibt es sonst irgendwas sinnvolles?

Ich bin für alle Tipps dankbar.

Schönen Gruß,
oetzi
 
Gibt afaik nichts vorgegebenes, sondern ist dir überlassen, was du nutzt. WebServices sind da denk ich relativ üblich, egal ob klassische SOAP oder über JSON. Da kannst du entweder auf Bibliotheken zurückgreifen (z.b. kSoap) - oder dir selbst schreiben.

Auch möglich ist das direkte nutzen von XML<->Java Parsern wie JAX-B - allerdings würde ich dir aus Performancegründen davon abraten, selbstgeschriebene XML Parser sind hier wesentlich Performanter!
 
Hallo Sixi,

danke für die Info.
Dann werde ich es wohl mal mit JSON probieren. Da wollte ich mich sowieso mal reinarbeiten.
Hast du da zufällig auch noch einen heißen Tipp für mich? Gibt es da zufällig auch gute Bibliotheken, die einen unterstützen?
 
Protobuf?
 
mhh, Protobuf sieht mir auf Anhieb so aus, als müsste man sich hier wieder in eine neue Technik einarbeiten.
Warum empfiehlst du es denn? Was sind die Vorteile aus deiner Sicht?
 
Ich nutze pico web remoting on serverseite ( CXF wäre auch denkbar ) die JSON ausliefert. Auf dem Gerät nehme ich GSON als Pull-Parser, und eigene Databindingbibliothek:

https://github.com/ko5tik/jsonserializer

(ist mittlerweile auf maven central)
 
protobuf hat weniger overhead als json (zumindest bei der Datenübertragung^^).

Google nutzt das für den android market und vermutlich auch alle anderen services die auf dem
android laufen.
 
Ich habe mir eben GSON angeguckt. Das scheint eine sehr simple Bibliothek zum Thema zu sein.
Mir geht es jetzt am Anfang nicht sofort um maximale Performance bzw. minimale Größe, etc. :)
 
im Android eingebauter JSON parser funktioniert wie DOM - also, baut komplette baum auf im Speicher. Für kleine Datenmengen geht es, aber wenn es großer wird leidet Perfromance enorm. GSON bietet pull-modell , also weniger Speicherverbrauch und eingebaute Bindungsschicht. Ist aleerdings etwas zu groß für meinen Geschmack.

Deswegen verwende ich abgespeckt Version von GSON (nur parsing, etwa 16K ) und eigene Databinding
 
Mal ne ganz blöde Frage: Wo packe ich so extra libs hin? :)
Die von Eclipse erstellte Android Projektstruktur hat kein lib Verzeichnis und da die Struktur bei Android ja recht stark vorgegeben ist, gehe ich mal von aus, dass ich mir das nicht aussuchen darf oder?

@ko5tik:
Wie heißt denn diese abgespeckte Version von GSON?
Und verstehe ich das richtig, die kann dann "nur" JSON in Java Objekte umwandeln?
 
völlig banane.
Nur nicht in den res/ order assets/ Ordner.
 
oh okay, danke :)
 
GSON bietet ein extra-Download - schau mal nach dem kleinsten auf deren Download seite. Es parst nut JSON und sonst nichts. GSON bietet auch eigene Databinding, die erlaubt aus JSON-Stream Java Objekte automatich zu erzeugen. (mir ist dierse aber zu groß und zu kompliziert, deswegen eigene Lib)
 
Wie schnell ist denn deine Lib im Vergleich zu Jackson?
 
Habe ich nicht direkt verglichen, aber jackson ist das schnellste im JSON-Bereich. Da ich aber GSON pull parser benutze, bin ich nicht weit davon enfernt. Es ist auf alle fälle schneller wie eingebaute JSON parser

Jackson ist allerdings etwas zu groß für Android-Entwicklung, und ich war noch nicht in der lage Tatu dazu zu bewegen eine abgespeckte Version zu erstellen.

Von der Geschwindigkeit kannst du dich überzeugen wenn du mein OCR-Auflader ausprobierst - es lädt und parst etwa 200K JSON-Daten bei dem Start
 
Joa, 900kb nur an JSON libs ist natürlich eine Ansage. Aber bisher bin ich ehrlich gesagt relativ zufrieden mit der Geschwindigkeit und darum hab ich es mal in kauf genommen.
Allerdings ist unsere App trotz 900kb Jackson libs, Greendroid, ActionBar Sherlock und unserem Kram inklusive Bilder nur 950kb groß. Wie auch immer Android das macht...

Deinen OCR-Auflader probiere ich mal aus. Auch wenn ich ihn nicht brauche ;)
 
Nimm lieber Wahlhilfe-App , Prepaid-Auflader wird nur bestimmte Anzahl der Ziffern akzeptieren ( Je nach Netzwerk )
 

Ähnliche Themen

D
Antworten
23
Aufrufe
2.531
Data2006
D
B
Antworten
4
Aufrufe
487
bb321
B
M
Antworten
3
Aufrufe
161
moin
M
Zurück
Oben Unten