• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Kommunikation mit Java-Server | REST

s4ckm4n

Granny Smith
Registriert
11.02.10
Beiträge
12
Hey *,

Ich will eine simple Client-Server Applikation schreiben (sehr einfach, nur Bilder und Text auf Anfrage des Clients senden, zu den Bildern sollen Kommentare verfasst werden können). Der Server soll in Java implementiert werden, der Client wie üblich in Objective-C.
Für die Kommunikation hatte ich die Idee alles über Sockets zu machen, mir also ein Protokoll zu definieren, un dann halt Bytes oder Strings hin- und herschicken.

Nun komm ich zu meiner eigentlichen Frage: Ein Hochschulkollege hat mir REST empfohlen, Ich kenne mich da nicht wirklich aus.
Ist dies der Stand der Kunst, bzw für meine Zwecke optimal? Oder wie soll ich die Kommunikation gestalten?
Extra ein Protokoll definieren wäre schon ein wenig umständlich?

Ich hab gedacht ich frage jetzt erst einmal nach, bevor ich mich da gründlicher einarbeite.

Für Anregungen wär ich dankbar :)

Gruß,
s4ckm4n
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
http://jersey.java.net/ + http://jaxb.java.net/
Code:
@Path("/{testStr}.xml")
@GET
@Produces("text/xml")
public JaxBFähigesObject methode(@PathParam("testStr") String str){ return new JaxBFähigesObject(str)  }

damit kannst du dann solche Spielereien machen. Das sieht für dich jetzt etwas konfus aus, aber die Mühe, sich da rein zu arbeiten, lohnt sich vollkommen. Du arbeitest dann im Endeffekten mit XML Objekten auf der Clientseite und mit normalen Objekten auf der Java Seite, die via JAXB in XML Dokumente umgewandelt werden können.

EDIT: und nein du willst kein neues Protokoll implementieren und mit Bytes arbeiten, das macht kaum Spaß, ist anstrengend und du musst dich um sämtliche Fehler kümmern (glaub mir, ich habe da Erfahrung).
 

s4ckm4n

Granny Smith
Registriert
11.02.10
Beiträge
12
Vielen Dank, für deine Antwort :)
So wie ich das jetzt verstanden hab, benutz man JAXB um serverseitig die Java-Objekte in XML zu packen.
Jersey stellt im Endeffekt meinem Client den RESTful Webservice bereit, und hat auch nen Webserver integriert.
Mein Server muss also diese beiden APIs einbinden, mein Client benutz dann die hauseigenen Objective-C Mittel
um normale HTML Anfragen zu machen, un parsed die XML Daten.
Oder gibt es clientseitig da auch noch eine passende API für?
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
also für XML gibt es sicherlich eine gute API auf Objective-C Seite. Leider kenne ich mich da weniger aus, sollte aber schon von Apple mitgeliefert werden. Und ja so ist es dann.
 

s4ckm4n

Granny Smith
Registriert
11.02.10
Beiträge
12
Hey, hab letzt von nem Programmier, der sich mit iOS auskennt, gehört, dass JSON gegenüber der XML Variante zu empfehlen ist. Könnt ich dazu vll noch paar Anmerkungen von euch/dir haben?
 

IrgenteinName

Braeburn
Registriert
31.08.10
Beiträge
44
Zu JSON und Java fallt mir Jackson ein. URL hab ich grad nicht, aber gibt es bei github.
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
Jersey kann dir auch JSON erzeugen. Einfach mal in die Dokumentation schauen.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
JSON hat den großen Vorteil, dass du daraus direkt JavaScript Objekte machten kannst ohne großes Parsing deinerseits. Auch ist die Übersetzung Objekt <=> JSON generell einfacher als die Übersetzung Objekt <=> XML.
Aber wenn man schon mit JSON arbeitet, könnte man auch als Datenbackend über mongodb nachdenken. Vorteil: Daten können im JSON Format direkt aus der Datenbank gelesen werden, mongodb hat eine integrierte JavaScript Engine und man braucht bis zum Client gar nichts übersetzen.
Leider haben aber die meisten Probleme damit sich von einem relationalen Datendenken zu verabschieden, daher soll das nur so als ein Tipp am Rande aufgefasst werden.
 

funbasten

Alkmene
Registriert
05.04.08
Beiträge
30
empfehle auch json. Es gibt jede Menge Bibliotheken in Java, um Datenstrukturen in json Notation zu übertragen und iOS 5 ist die Unterstützung von json direkt eingebaut, siehe:
http://www.raywenderlich.com/5492/working-with-json-in-ios-5

Dort gibts auch ein xcode Projekt zum Downloaden

Um Bilder (genereller: Binärdaten) downzuloaden hast Du zwei Mglk:
1. base64 codiert innerhalb der json Struktur oder
2. ausserhalb davon, durch direkten http Zugriff downloaden.
 

geokey

Golden Delicious
Registriert
05.12.10
Beiträge
8
http://mobile.tutsplus.com/tutorials/iphone/restkit_ios-sdk/
hast du dir das mal angeschaut? wenn du das RestKit integrierst hast du direkt auch noch objectmapping integriert und musst dir keine Gedanken darüber machen, wie du das xml oder json behandelst, du bekommst einfach das gesendete Object in ein Objektive-c Object gemappt.

Ich weis nicht genau, ob das der stand der Kunst ist (das dort beschriebene objectmapping gibt es mittlerweile in der Version 2.x).
Wir benutzen das in einem Projekt an der Uni und haben ziemlich schnell brauchbare Ergebnisse erhalten...