App und Webserverkommunikation

  • 21 Antworten
  • Letztes Antwortdatum
K

Katherina

Neues Mitglied
0
Hallo :)


ich habe in Java ein fertiges Programm entwickelt, was ich nun als App portieren möchte.

Einige Daten von dem Programm sollen nicht auf dem Handy, sondern auf einem Server abgelegt und verarbeitet werden. Dieser Server soll auch einige Anwendungen, die über das SP gestartet werden verarbeiten.

Die App ist auch userspezifisch, hat also einen Login mit Username und PW. Das soll ebenfalls über den Server verifiziert werden. Eine Onlineverbindung ist also notwendig.

Ich weiß zwar, wie ich Methoden in z.B. der Klasse A auf Klasse B zugreifen lasse, aber wie mach ich das, wenn Klasse A auf dem Handy liegt und B auf dem Server?

Im prinzip ist mir hier der Kommunikationsmethode unbekannt und auch wie ich die Daten dann entsprechend verschlüssel.

Falls jemand noch nicht verstanden hat was ich eigentlich will :wubwub:

Kurzes Beispiel:

APP:
Kunde installiert und erstellt über die App ein Konto, welches allerdings auf dem Server angelegt wird.
Der Kunde kauft z.B. 3 birnen und empfiehlt diese einem anderen Kunden, mittels einer ihm bekannten ID weiter, der natürlich auch die App nutzt.

Ich danke euch schonmal für eure Hilfe.
 
  • Danke
Reaktionen: RED-BARON
Hier mal zwei spontane Stichwörter:
Http und Rest

LG.

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
Wenn deine App schon fertig ist, wie machst du das denn aktuell?
Oder ist das momentan ein einziges Programm?
 
Ja im Moment ist das ein komplett fertiges Java Programm mit 4 Klassen.
 
joshua1996 schrieb:
Hab mich vor kurzem auch damit beschäftigt, bzw tu es immer noch ;)

Nicht schlecht die Tuts. Leider nicht besonders generisch die
Kommunikation was in der Praxis durchaus von Bedeutung sein
könnte.

Ich stelle mir nur vor, verschiedene Kunden arbeiten mit unterschiedlichen
Versionen einer App und diese setzen jeweils unterschiedliche Tabellen-
Strukturen voraus. Strukturänderungen sollten möglichst schnell umsetzbar
sein. Wenige Minuten meine ich damit, und sollten keinen negativen
Einfluss auf App-Versionen haben die im Umlauf sind. Strukturänderungen
können auch Index oder Fremdschlüsselbeziehungen umfassen.
Tabellenfelder sollen "belibig" entfernt oder hinzugefügt werden können.
Ebenso ganze Tabellen. Apps älterer Versionen sollen komplett die Tabellen,
auch neuere die bei Erstellung der App noch nicht existierten,
synchronisieren können. Up- oder Downgrades der App muss möglich sein.
Von einer beliebigen Version - nach einer anderen beliebigen Version.
Bei Abbruch der Netzwerkverbindung muss ein Rollback der Transaktionen
am Server und am Gerät erfolgen.

Gibt sicher noch mehr Anforderungen an eine Datensynchronisation in der Praxis,
abhängig von der App und der Kundschaft.

Benutzt habe ich SyncML zwar nicht, aber nett zu lesen.
 
Zuletzt bearbeitet:
Hallo nochmal,

hab mich jetzt ein wenig in die REST Api einglesen. Klingt ganz toll.

Also ist das im prinzip so, dass ich eine GUI auf dem SP habe und kann dann über Rest Befehle auf meinen Server zugreifen, der verarbeitet diese und sendet die an das Smartphone fertig zurück?

Was ich noch nicht ganz verstehe, woher bekomme ich diese API? Gibts speziell dazu ein gutes Tutorial auf Deutsch? Oder eine App mit Sourcecode das man sich das mal ansehen kann, wenn nötig auch auf englisch :)
 
Die Anleitung ist typisch akademisch und zu nichts zu gebrauchen :)



how-to-create-rest-api-for-android-app-using-php-slim-and-mysql-day-1
how-to-create-rest-api-for-android-app-using-php-slim-and-mysql-day-2

Sollen die Daten tatsächlich in eine Datenbank, sollte BSON vorzugeweise
Verwendung finden um ein Mindestmaß an Typsicherheit zu gewährleisten.
Anforderungen Binär-Daten zu übertragen zu wollen soll es ja auch geben.
Grenzen eines HTTP-Request können bei großen Datenmengen zu Poblemen
führen.

Weiterhin sind spätere Versionsänderungen der REST-API von Anfang an
zu beachten.

HTTP+REST ist eben doch nicht ganz so simpel

Das niemand anderes als deine App die REST-API erreicht, bzw. das jeder
"REST-Befehl" die Autorisierung zur Ausführung des Befehls selbst prüft ist
selbstverständlich.
 
Zuletzt bearbeitet:
Also das Tutorial How to create REST API for Android app using PHP, Slim and MySQL - Day 1/2 geht glaube ich ein wenig an dem vorbei was ich machen möchte.

Im prinzip hab ich mir das so vorgestellt:

Anwendung auf dem Handy -> request an Server (via Rest API richtig?) -> verarbeitung der Daten via Java (java holt sich Nutzerdaten dann aus einer MYSQL DB) und sendet zurück via Rest an das handy.

In dem Tutorial läuft ja alles über PHP oder? PHP kann ich leider nicht desweiteren habe ich auch keine Idee wie ich da dann meine Java Anwendung zwischen drin starte :(
 
Ist doch egal ob php, java, python oder was weis ich. Es verbietet dir ja niemand auf dem Server nen Java Programm zu starten was auf http Anfragen reagiert.

Aber php ist das einfachste. Ist halt die übliche Methode da nen Apache zu haben und so etwas durch ein php Script erledigen zu lassen.

Apache kann dann auch gleich die Authentifizierung übernehmen. Dein Script muss dann nur die Anfragen annehmen, den Datenbank request machen und das Ergebnis zurück geben.

cu
 
Zuletzt bearbeitet:
Naja ob php "üblich" ist... sei mal dahin gestellt.

Wenn du das ganze mit Java machen möchtest.. empfele ich dir den JAX-RS bzw. JAX-RS 2.0 Standard zu benutzt.

Bei Amazon gibt es da ein nettes Buch zu ;)

lg. Dagobert
 
Im prinzip habe ich gar kein Problem das PHP da eine Rolle spielt. Nur ist mir nicht klar, wie ich mein eigentliches Java Programm dann zum laufen bekomme. Mein Java Programm bekommt von der APP und der DB zwar nur wenig Daten, verarbeitet aber eine ganze Menge und soll das Ergebnis dann übermitteln.

Wenn ich das richtig verstanden habe, soll jetzt sozusagen das PHP Skript meine Anwendung starten und auf das Ergebnis warten und an PHP übergeben, richtig?
 
Setzt dir doch einfach mal nen Apache auf. Dann erstellst du ne api.php was eine Datenbankabfrage macht und als json oder xml zuruckgibt.
Dann rufst du an der Shell "wget http://<serverip>/api.php" auf und siehst wie simpel das grundsätzlich ist ;)

Dann bekommst du schon mal nen Gefühl für diesen Ansatz und kannst entscheiden was du davon hällst.


Da du offenbar noch nie etwas in dieser Richtung gemacht hast halte ich es für sinnvoll das du da erst mal so etwas ganz simples machst um da nen Gefühl für zu bekommen.


Das jetzt alles komplett theoretisch zu machen halte ich für sinnfrei.

DagobertDokate schrieb:
Naja ob php "üblich" ist... sei mal dahin gestellt.

Naja, zumindest weit verbreitet :) Und IMHO für den Anfang ne gute Methode um sich in dieses Thema erst mal reinzuspielen.
Man muss ja nicht gleich mit dem kompleziertesten anfangen.

cu
 
Zuletzt bearbeitet:
@rihntrha

Deine Ausführung war soweit verständlich, danke dafür, es klingt einfach richtig ja. Auch die Tutorials zu dem Thema versteh ich ja soweit.

Das Problem ist einfach nur: Ich hab knapp 2 Wochen in ein Java Programm mit 4 Klassen und ca. 1600 Zeilen Code investiert die ich jetzt natürlich nicht aufgeben mag :blushing:

Und auch generell ist das mit PHP natürlich einfacher, da es dazu viele Tutorials gibt. Kann ich aus PHP heraus denn mein Java Programm starten?

Sorry falls meine Fragen alle ein bisschen doof sind, meine Stärke liegt leider nur bei Java und wie man von der Uni weiß haben es Mädchen im Informatikverständnis nicht unbedingt leichter :o
 
Die Frage ist "Was macht der Server Teil eigentlich?". Sind die 4 Klassen mit 1600 Zeilen für den Server Teil? Oder soll der Server Teil nur eine einfache Schnittstelle zur Datenbank sein?

Du kannst aus php herraus natürlich andere Programme starten und nach Beendiging weiter machen (das Ergebnis übernehmen und weiterverarbeiten). Wen du den Server selber kontrolieren kannst dann ist es kein Problem.
http://php.net/function.exec


Du kannst auch mit dem Apache java nutzen anstelle von php.


Oder du kannst nen JAVA Program starten, dort nen TCP Port öffnen und auf http Anfragen reagieren. Dazu wird es in Java auch schon fertige Lösungen geben.


Es gibt viele viele Wege ;)

cu
 
Zuletzt bearbeitet:
Ja genau, die 4 Klassen sind aus Sicherheitsgründen auf dem Server.

Auf dem Server soll sozusagen die Anfrage der App eingehen.
Mein Programm verarbeitet die Anfrage und holt sich ein paar Daten zum Abgleich aus der MySQL DB. Nach der Verarbeitung wird die Aktualisierung auf das Handy geschickt sowie in der DB gespeichert.
Auf dem Handy ist also eigentlich nur die GUI sowie ein paar Daten des letzten requests.
 
Dann wäre es vermutlich sinnig wenn dein Java Programm selber nen http Server erhält (also TCP Port öffnen und auf Anfragen warten).
Google mal in dieser Richtung, da wird es schon fertiges geben. Ich vermute auch das DagobertDokates Tip diese Lösung meinte.

cu
 
Ich werfe mal Java ServletContainer, ApplicationServer in den Raum.
Tomcat, jetty etc.

Da mal reinlesen.

Hab ich bei meiner App auch so gemacht, da ich keine Lust auf PHP hatte hab ich mir nen ServletContainer genommen und damit den Serverteil gebastelt.
Vermutlich etwas übertrieben mit Spring Framework, aber war auch teilweise zum üben ;)

Warum PHP quasi Standard ist liegt einfach daran, dass man überall Webspace mit PHP und mySQL Datenbank hinterher geworfen bekommt.
Wenn du ein ServletContainer irgendwo im Internet betreiben willst gibt's da weniger angebote und man landet schnell bei einem eigenen (v)Server den man dann selbst verwalten muss.
Was vermutlich daran liegt das so ein Tomcat nicht unbedingt sparsam mit dem Arbeitsspeicher umgeht, je nachdem was man da programmiert.

Aber die Google App Engine ist wohl kostenlos bis zu einem gewissen limit.
Solltest du dir vielleicht mal angucken.
 
@amfa

hast du da noch irgendwelche Klassen übrig ohne viel Code den du auf Pastebin hochladen könntest, damit ich weiß, wie und was ich in meine Klassen an zusätzliche extensions importieren muss?

Geht dieses Tutorial in die richtige Richtung? REST with Java (JAX-RS) using Jersey - Tutorial
 

Ähnliche Themen

G
Antworten
0
Aufrufe
132
Gerdchen07
G
G
Antworten
1
Aufrufe
384
Gerdchen07
G
G
Antworten
13
Aufrufe
596
Gerdchen07
G
L
Antworten
2
Aufrufe
554
Lexub
L
migi01
Antworten
26
Aufrufe
1.990
migi01
migi01
Zurück
Oben Unten