• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Web API in Android (JAVA) einbinden

O

osion

Bekanntes Mitglied
Hallo miteinander

Ich will eine Web-Api mit meinem Android-Telefon ansprechen.
Umgesetzt wird das mit Java, Retrofit,Livedata, RXJava

Der Ablauf ist Simpel:
1. Logindaten müssen zur API gesendet werden
2. API sendet ein Session-Token
3. Alle weitere Abfragen über den Token + Benutzer-Id

Login
Ich habe eine Abstrakte Klasse Service, welche die Daten für das Login enthalten, z. B. SessionToken
Hier bin ich nicht sicher ob das so in Ordnung ist.
Idee.png


Repository
Das Repository enthält alle Services, welche von der API angeboten wird.
  • getLiveDataXY (Gibt das LiveData Objekt zum Service XY)
  • requestServiceXY(Das Repository fragt nach den Daten)
Beispiel eine requestService
Code:
    public void requestServiceXY() {
        try {
            Single<TestData> observable = new ServiceXY().send();
            observable
                    .timeout(30, TimeUnit.SECONDS)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new SingleObserver<TestData>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                        }

                        @Override
                        public void onSuccess(TestData response) {
                            liveDataTest.setValue(response);
                        }

                        @Override
                        public void onError(Throwable e) {
                            e.printStackTrace();
                        }
                    });
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

    }


Mapper zum JSON in Klassen

Die HTTP-Anfrage mache ich mit Retrofit 2, welche auch direkt das Mapping vom JSON-String übernimmt.
Code:
public class ResponseLogin {
    private String sessionToken;
    private String sessionExpires;
    private int userId;
    private boolean isAuthenticated;
    private ArrayList<Link> links;

}

Soweit ich verstehe, ist die Klasse, welche die Daten für das Mapping entählt als DTO bezeichnet und die Daten innerhalb vom DTO als DAO richtig?
Ist den den die Variabel links auch ein DAO oder ein DTO, weil Link eine eigene Klasse ist?

Meine Frage:
  1. Ist es in Ordnung, wenn ich eine abstrakte Service-Klasse habe, welche über eine Klasse die Benutzerdaten sowie die Session-Daten speichert oder wäre eine andere Möglichkeit zu Bevorzugen?
  2. Ist beim JSON-Mapping, die Klasse, welche die Daten enthält ein DTO und die Daten darin sind DAO's?
  3. Ist der Link bei der Variabel links ein Dao oder ein DTO (weil eigene Klasse)?
 
mihe7

mihe7

Top Contributor
Ein DAO ist einfach ein Objekt, das den Zugriff auf eine Datenquelle (i.d.R. eine DB) kapselt. Dein Repository käme diesem am nächsten.

Ein DTO ist dagegen ein Objekt, das einerseits die Daten repräsentiert, die über das Netzwerk übertragen werden sollen und andererseits ggf. die Serialisierung/Deserialisierung übernimmt. Der Sinn eines DTOs besteht einzig darin, Daten gebündelt über das Netzwerk zu übertragen.
 
O

osion

Bekanntes Mitglied
Ein DAO ist einfach ein Objekt, das den Zugriff auf eine Datenquelle (i.d.R. eine DB) kapselt. Dein Repository käme diesem am nächsten.

Ein DTO ist dagegen ein Objekt, das einerseits die Daten repräsentiert, die über das Netzwerk übertragen werden sollen und andererseits ggf. die Serialisierung/Deserialisierung übernimmt. Der Sinn eines DTOs besteht einzig darin, Daten gebündelt über das Netzwerk zu übertragen.

Das heisst:
1. Die Klasse die für das Mapping vom JSON-String (Server response) verwendet wird ist ein DTO
2. Die Klasse die den Inhalt zum versenden der Daten (zum Server verwendet wird ist ein DTO (Es ist möglich Retrofit eine Klasse mit den Inhalt mitzugeben, statt alles manuell)

Soweit richtig?
 
mihe7

mihe7

Top Contributor
Das Problem ist, dass Du versuchst, Objekte nach Patterns zu kategorisieren. Der Begriff DTO stammt vom gleichnamigen Entwurfsmuster, bei dem es darum geht, Daten für den Transport über das Netzwerk zusammenzufassen, um unnötige Aufrufe über das Netzwerk zu sparen.

Wenn Du einen Kunden abrufst, übermittelst Du halt das Kundenobjekt. Das macht aus dem Kundenobjekt nicht automatisch ein DTO (i. S. d. Patterns), da hierfür das Pattern nicht benötigt wird¹.

Wenn Du dagegen auch den Umsatz, die Zahl der Bestellungen und Rechnungen brauchst, dann würde das normalerweise dazu führen, dass Du

1. den Kunden abrufst
2. den Umsatz zum Kunden abrufst
3. die Zahl der Bestellungen abrufst
4. die Zahl der Rechnungen abrufst

Das heißt, Du müsstest vier Anfragen und vier Antworten über das Netzwerk schicken. Also erstellt man ein DTO, das diese Dinge zusammenfasst. Dann gibt es eine Anfrage, die mit dem DTO beantwortet wird.

¹ natürlich könnte man argumentieren, dass man Namen, Vornamen etc. ggf. auch einzeln abrufen müsste und daher das Kundenobjekt ein DTO darstellt. Dann betrachtet man aber alles, was mehr als einen primitiven Wert zurückgibt, als DTO. Gegenargument: die Entities existieren bereits, dem entsprechend gibt es kein Problem, das mit einem Pattern (konkret dem DTO) gelöst werden müsste.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
jmar83 Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu? Android & Cross-Platform Mobile Apps 33
T Bringen mir die Java-Basics irgendetwas für die Android-Programmierung Android & Cross-Platform Mobile Apps 4
T Fehler Android Studio: java.net.MalformedURLException: no protocol: http%3A%2F%2Fwww.mal ..... Android & Cross-Platform Mobile Apps 2
C Android Programmierung speziell oder einfach Java Buch kaufen? Android & Cross-Platform Mobile Apps 3
J Android Java Packet in Android Java ide hinzufügen. Android & Cross-Platform Mobile Apps 3
P Android App - Java Android & Cross-Platform Mobile Apps 1
S Android Android java onclick listener Problem Android & Cross-Platform Mobile Apps 9
T Android Android Sensor: Java Problem Android & Cross-Platform Mobile Apps 1
D Lib für (Desktop-)Java und Android schreiben Android & Cross-Platform Mobile Apps 7
W Java Editor für Android +Emulator Android & Cross-Platform Mobile Apps 7
M Android Switch-Klasse stoppt Android App / java.lang.NullPointerException Android & Cross-Platform Mobile Apps 5
L Mit Java ein Android Projekt kompilieren Android & Cross-Platform Mobile Apps 6
F Bei einer Android Java App, Objekte erstellen Android & Cross-Platform Mobile Apps 2
J Android-App-Programmierung - Ähnlich normaler Java-Programmierung? Android & Cross-Platform Mobile Apps 6
S Desktop Anwedung ( Java 6 ) auf android zu greifen. Android & Cross-Platform Mobile Apps 6
L Android Android über Java Code connecten? Android & Cross-Platform Mobile Apps 2
A Android SimpleDateFormat gibt für Date unter android anderes Datum zurück als in Std. Java Android & Cross-Platform Mobile Apps 2
S Android binäre Daten zwischen Android und einem Java-Server Android & Cross-Platform Mobile Apps 5
S Android Java, Android und Serializable Android & Cross-Platform Mobile Apps 3
H Mjpeg Code läuft unter Java jedoch nicht unter Android? Android & Cross-Platform Mobile Apps 11
W Android Crosswordliste Java<->Android Syntax Android & Cross-Platform Mobile Apps 5
H Android ANDROID SDK + JAVA SE Development Kit (JDK) Android & Cross-Platform Mobile Apps 4
W Android gleich Java? Android & Cross-Platform Mobile Apps 3
J Is Android Development Head First Outdated? Android & Cross-Platform Mobile Apps 3
J Android Android Datenbankverbindung zum Raspberry Pi Android & Cross-Platform Mobile Apps 1
lolcore Android Studio -Download Documentation for Android SDK Android & Cross-Platform Mobile Apps 0
S Sinnvollste weg eine SQLite DB mit Android auslesen Android & Cross-Platform Mobile Apps 7
W Problem mit Android Studio Android & Cross-Platform Mobile Apps 0
W App Abo Android Android & Cross-Platform Mobile Apps 10
OSchriever Android Android MediaPlayer bei Anruf stoppen/pausieren Android & Cross-Platform Mobile Apps 2
OSchriever Auf onClick-Listener reagieren und Parameter übergeben (Android Studio) Android & Cross-Platform Mobile Apps 4
W removeNetwork Android App mit Spendenaktion fürs Tierheim! Android & Cross-Platform Mobile Apps 1
T Android R.string.test+i Problem Android & Cross-Platform Mobile Apps 2
P undefinierbarer Fehler Android Android & Cross-Platform Mobile Apps 8
T Android ArrayList sortieren mit 2 Werten ohne thencomparing , Wie? Android & Cross-Platform Mobile Apps 10
W Variable überschreiben (Android Studio) Android & Cross-Platform Mobile Apps 2
jmar83 Android Selbst entwickelter SMTP-Client läuft auf PC, nicht aber auf Android Android & Cross-Platform Mobile Apps 9
jmar83 Android Warum muss man bei Android Studio immer 2x auf "Run" klicken damit die App auf dem Gerät startet Android & Cross-Platform Mobile Apps 8
jmar83 Android Wo das 'android.useAndroidX' property hinzufügen? Android & Cross-Platform Mobile Apps 8
jmar83 Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
P Login und Registrierung Android Anzeige Android & Cross-Platform Mobile Apps 7
S Von JavaFx zu Android Android & Cross-Platform Mobile Apps 12
K Android to Pi | Websocket Problem Android & Cross-Platform Mobile Apps 3
M Komponenten positionieren in Android Studio 3.6.3 Android & Cross-Platform Mobile Apps 1
M Android Studio - Property-Fenster einblenden Android & Cross-Platform Mobile Apps 1
M Android Studio - App auf dem Smartphone testen Android & Cross-Platform Mobile Apps 7
M Barrierefreie Appentwicklung für Android - Suche Codebeispiele Android & Cross-Platform Mobile Apps 8
M Android Studio - Configuration fehlt Android & Cross-Platform Mobile Apps 20
M Wo kann ich das Android SDK herunterladen / wie kann ich es installieren Android & Cross-Platform Mobile Apps 3
M Unsupported class file major version 57 - Fehlermeldung bei Android Studio Android & Cross-Platform Mobile Apps 27
jmar83 Android Studio (SDK) ANDROID_SDK_ROOT-Variable? Android & Cross-Platform Mobile Apps 5
J Android Studio macht seltsame Sachen Android & Cross-Platform Mobile Apps 2
J Android 9.1 aber android Studio findet API22 Android & Cross-Platform Mobile Apps 0
Dimax Web-Seite in native app convertieren mit Android Studio Android & Cross-Platform Mobile Apps 8
A Android Studio: while-Schleife beginnt nicht Android & Cross-Platform Mobile Apps 5
lolcore android studio: fehler bei laden des emulators Android & Cross-Platform Mobile Apps 10
J Android App - Browser öffnen und Text eingeben/Button click auslösen Android & Cross-Platform Mobile Apps 10
A Android-Studio: 2. Layout nach kurzer Zeit aufzeigen Android & Cross-Platform Mobile Apps 2
A jpg wird im Android Studio nicht akzeptiert Android & Cross-Platform Mobile Apps 3
J Android Studio - ArrayList - Selected Item ermitteln Android & Cross-Platform Mobile Apps 13
T Android SDK-Manager startet nicht in Eclipse Android & Cross-Platform Mobile Apps 5
J Was soll das bedeuten ? does not require android.permission.BIND_JOB_SERVICE permission Android & Cross-Platform Mobile Apps 7
A Android Studio: ImageView verpixelt Android & Cross-Platform Mobile Apps 2
J intend Service im Android Studio Android & Cross-Platform Mobile Apps 4
L Android Android Development eventuell mit Flutter Android & Cross-Platform Mobile Apps 1
S Android Layout - welchen Typ? Android & Cross-Platform Mobile Apps 3
Arif Android Android Studio: Fehler beim Einbinden fremder Bibliothek? Android & Cross-Platform Mobile Apps 2
L Android Android Contacts DB auslesen Android & Cross-Platform Mobile Apps 1
A Android Studio - App mit Nearby Android & Cross-Platform Mobile Apps 1
L Android content URI Datei einlesen Android & Cross-Platform Mobile Apps 9
N Android Game Background Service Android & Cross-Platform Mobile Apps 11
Jackii Android Android Studio Error im Testlauf ohne zu programmieren Android & Cross-Platform Mobile Apps 9
B Android Probleme mit Android Studio Android & Cross-Platform Mobile Apps 6
Excess Android Service läuft nicht in Sandby weiter Android & Cross-Platform Mobile Apps 2
B Android Projekt für Android und IOS erstellen? Android & Cross-Platform Mobile Apps 5
J App funktioniert auf Android 5, auf 6 nicht Android & Cross-Platform Mobile Apps 2
J Android Snake Android & Cross-Platform Mobile Apps 15
J Android TaschenRechner Android & Cross-Platform Mobile Apps 22
I Das Problem mit der Tastatur... android:windowSoftInputMode="adjustPan" Android & Cross-Platform Mobile Apps 1
E Wie erhalte ich Zugriff auf das Microfon? (Android Studio) Android & Cross-Platform Mobile Apps 9
B Android Kein Zugriff auf Telefonspeicher (Android 6) Android & Cross-Platform Mobile Apps 1
T Android Equalizer für Android Android & Cross-Platform Mobile Apps 3
L Android Android Studio - Exportierte APK funktioniert nicht Android & Cross-Platform Mobile Apps 6
L Android Methode funktioniert nicht unter Android Android & Cross-Platform Mobile Apps 3
A Beginnen mit Serverkommunikatsion in Android Studio Android & Cross-Platform Mobile Apps 6
E Android Studio Android & Cross-Platform Mobile Apps 15
L Android Android Studio Setup killt Explorer Android & Cross-Platform Mobile Apps 3
K Android Videos rendern Android & Cross-Platform Mobile Apps 1
J Variable in strings.xml (Android Studio) Android & Cross-Platform Mobile Apps 0
B Android Android Studio lässt PC abstürzen Android & Cross-Platform Mobile Apps 3
B Android App Fehler Android & Cross-Platform Mobile Apps 21
J android Spinner funktioniert nicht Android & Cross-Platform Mobile Apps 14
G Android Push Notification Android & Cross-Platform Mobile Apps 2
Light Lux Fehlermeldung unter Android Studio Android & Cross-Platform Mobile Apps 1
D Android Android Apps direkt vom Handy aus programmieren? Android & Cross-Platform Mobile Apps 2
L Android Android Kalendar Tag Ansicht Android & Cross-Platform Mobile Apps 1
L Android Texterkennung für Android? Android & Cross-Platform Mobile Apps 1
L Android Chart API für Android Android & Cross-Platform Mobile Apps 0
L Android SQLite mit HSQLDB über Android synchronisieren Android & Cross-Platform Mobile Apps 13
B Android Text von Android zu PC senden? Android & Cross-Platform Mobile Apps 5

Ähnliche Java Themen

Anzeige

Neue Themen


Oben