don't know how to access data using retrofit
- By saramarz
- Android Development
- 3 Replies
To retrieve the launchLatest data from the SpaceX GraphQL API using Retrofit, you can update your Retrofit service interface as follows:
To make the request, you can use the following code:
Code:
interface RetroService {
@POST("graphql/")
@Headers("Content-Type: application/json")
fun getLastLaunch(): Call<LaunchModel>
data class LaunchModel(val data: Data)
data class Data(val launchLatest: LaunchLatest)
data class LaunchLatest(
val id: String,
val details: String?,
val isTentative: Boolean?,
val launchDateLocal: String?,
val launchDateUnix: Long?,
val launchDateUtc: String?,
val launchSite: LaunchSite?,
val launchSuccess: Boolean?,
val launchYear: String?,
val links: Links?,
val missionId: List<String>?,
val missionName: String?,
val rocket: Rocket?,
val staticFireDateUnix: Long?,
val staticFireDateUtc: String?,
val telemetry: Telemetry?,
val tentativeMaxPrecision: String?,
val upcoming: Boolean?,
val ships: List<Ship>?
)
data class LaunchSite(val siteId: String, val siteNameLong: String)
data class Links(val flickrImages: List<String>, val missionPatch: String, val missionPatchSmall: String, val presskit: String, val redditCampaign: String, val redditLaunch: String, val redditRecovery: String, val redditMedia: String, val videoLink: String)
data class Rocket(val rocketId: String, val rocketName: String, val rocketType: String)
data class Telemetry(val flightClub: String)
data class Ship(val shipId: String, val shipName: String, val shipModel: String)
}
To make the request, you can use the following code:
Code:
val retroInstance = RetroInstance.getRetroInstance().create(RetroService::class.java)
val requestBody = "{\"query\":\"{launchLatest{id, details, isTentative, launchDateLocal, launchDateUnix, launchDateUtc, launchSite{siteId, siteNameLong}, launchSuccess, launchYear, links{flickrImages, missionPatch, missionPatchSmall, presskit, redditCampaign, redditLaunch, redditRecovery, redditMedia, videoLink}, missionId, missionName, rocket{rocketId, rocketName, rocketType}, staticFireDateUnix, staticFireDateUtc, telemetry{flightClub}, tentativeMaxPrecision, upcoming, ships{shipId, shipName, shipModel}}}\",\"variables\":null}"
val retrofitData = retroInstance.getLastLaunch(requestBody)
retrofitData.enqueue(object: Callback<RetroService.LaunchModel> {
override fun onFailure(call: Call<RetroService.LaunchModel>, t: Throwable) {
Toast.makeText(this@MainActivity, "call fail", Toast.LENGTH_LONG).show()
}
override fun onResponse(
call: Call<RetroService.LaunchModel>,
response: Response<RetroService.LaunchModel>
) {
val responseBody = response.body()
if(responseBody != null){
val
