• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Einige Blicke in fremde Welten dürft Ihr nun bestaunen und darüber abstimmen, welche davon Euch am meisten gefällt: hier geht es lang für Euer Voting --> 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
 
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).
 
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?
 
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.
 
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?
 
Zu JSON und Java fallt mir Jackson ein. URL hab ich grad nicht, aber gibt es bei github.
 
Jersey kann dir auch JSON erzeugen. Einfach mal in die Dokumentation schauen.
 
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.
 
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.
 
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...