Abhängigkeiten in build.gradle hinzufügen
implementation 'com.squareup.moshi:moshi-kotlin:1.9.3'
implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'
Internet-Permission in AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
In einer eigenen Serviceklasse den Builder mit einem Moshi instantieren.
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder().addConverterFactory(MoshiConverterFactory.create(moshi)).baseUrl(BASE_URL)
.build()
```
Datenklasse erstellen
```kotlin
data class MarsPhoto(
val id: String, @Json(name = "img_src") val img_src: String
)
In einem Service-Interface werden die Aufrufe zum Werbserver definiert
interface MarsApiService {
@GET("photos")
suspend fun getPhotos(): List<MarsPhoto>
}
Retrofit initialisieren mit dem definierten Service-Interface
val retrofitService: MarsApiService by lazy {
retrofit.create(MarsApiService::class.java)
}
Im ViewModel die Daten abfragen:
viewModelScope.launch {
try {
val listResult = MarsApi.retrofitService.getPhotos()
_status.value = "Success: ${listResult.size} Mars photos retrieved"
} catch (e: Exception) {
_status.value = "Failure: ${e.message}"
}
}